2009-09-02 9 views
2

Nous avons créé un service WCF, déployé sur IIS. nous avons choisi l'authentification Windows intégrée. service ne peut pas être utilisé dans ce cas mais si nous pouvons définir la méthode d'authentification du répertoire virtuel IIS sur "Anonyme" pour les services WCF, l'erreur disparaîtra. Mais "Anonymous" n'est pas acceptable pour notre service WCF. Nous devons utiliser l'authentification Windows intégrée pour authentifier le client. Quelqu'un sait comment résoudre ce problème?Service WCF, authentification Windows

Merci à l'avance,

Ashish

+0

pouvez-vous afficher les fichiers de configuration qui montrent la configuration du client et du service wcf? – CSharpAtl

Répondre

1

Il y a deux principales choses que vous devez faire attention à:

  1. Votre configuration alignée: IIS, web.config (system.web et WCF)
  2. Votre client envoie-t-il des informations d'authentification Windows à la demande?

C'est probablement la seconde qui vous pose problème. Le journal IIS doit contenir l'utilisateur qui effectue l'appel.

+0

En fait, si j'autorise l'authentification Windows intégrée, sans Anonymous, l'application de fenêtre client ne peut pas accéder au service, même sur le serveur si je parcours le service, elle me montre l'erreur "Les paramètres de sécurité pour ce service nécessitent une authentification" anonyme " mais il n'est pas activé pour l'application IIS qui héberge ce service. " – Kasma

5

Vous devez faire quelques choses:

  • Désactivez l'option l'accès anonyme de votre forlder virtuel et vérifiez la sécurité Windows intégré.
  • Créer la configuration de liaison suivante:

    <basicHttpBinding> 
    <binding name="Binding1"> 
        <security mode="TransportCredentialOnly"> 
         <transport clientCredentialType="Windows" /> 
        </security> 
    </binding> 
    </basicHttpBinding> 
    
  • Appliquer la configuration ci-dessus pour votre service et MEX:

    <endpoint address="" binding="basicHttpBinding" bindingConfiguration="Binding1" contract="IService"> 
    </endpoint> 
    
    
        <endpoint address="mex" binding="basicHttpBinding" bindingConfiguration="Binding1" contract="IMetadataExchange"> 
    </endpoint> 
    
    • Créer un client et utiliser NetworkCredential pour passer vos informations d'identification:

       ServiceReference.MyClient proxy = new ServiceReference.MyClient(); 
           proxy.ClientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential("MACHINENAME\\USERACCOUNT", "passwrd"); 
           proxy.YourServiceOperation(); 
      

Il existe d'autres façons de définir le nom d'utilisateur & mot de passe indivdually mais il ne fonctionne pas en .Net 4.0. USERPOUNT est un compte de domaine ou LDAP auquel votre ordinateur hôte WCF est associé. Si le serveur n'est pas joint à un domaine, créez un compte localement en exécutant "lusrmgr.msc"

Questions connexes