2 votes

Appel WCF avec authentification Windows

Nous avons un système où les utilisateurs accèdent à un serveur web, le serveur web appelle ensuite un service WCF.

Nous souhaitons que l'appel au service WCF soit effectué dans le contexte de sécurité de l'identité Windows du pool d'applications sur le serveur web.

Quelle est la meilleure façon de procéder ? Peut-on le faire uniquement par une configuration dans le fichier web.config ?

Merci

Shiraz

5voto

marc_s Points 321990

Oui, vous devriez être en mesure de le faire, tout en configurant :

<system.serviceModel>
  <bindings>
     <netTcpBinding>
        <binding name="WinAuth" mode="Transport">
           <transport clientCredentialType="Windows" />  
        <bindings>
     </netTcpBinding>
  </bindings>
</system.serviceModel>

Bien sûr, en fonction de votre liaison, vous devrez utiliser une balise différente sous la balise <bindings> nœud parent - et bien sûr, toutes les liaisons ne supportent pas tous les modes de sécurité.....

Dans votre point de terminaison, utilisez la liaison appropriée et faites simplement référence à cette configuration :

<endpoint name="WCFService" address="......." 
          binding="netTcpBinding"
          bindingConfiguration="WinAuth"
          contract="......" />

Ça devrait le faire ! Et bien sûr, si vous avez besoin d'une sécurité des messages au lieu d'une sécurité du transport, vous pouvez également le faire.

Dans votre méthode de service WCF, vous pouvez vérifier si les informations d'identification de Windows ont été envoyées ou non, et ce qu'elles sont, en vérifiant :

ServiceSecurityContext.Current.WindowsIdentity

Ce sera NULL si vous n'avez pas d'appelant Windows, sinon il montrera qui vous a appelé.

Marc

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X