Tester un service WCF qui requiert une authentification

Récemment, j’ai eu besoin de tester un service WCF développé par mes soins. Ce service nécessite une authentification Windows. Je commence donc par créer un nouveau projet de type Console Application, puis ajoute une référence à mon service et fais un appel à l’une de ses méthodes. Petit problème, je me retrouve avec le message suivant :

« La demande HTTP n’est pas autorisée avec un modèle d’authentification client « Anonymous ». L’en-tête d’authentification reçu du serveur était « Negotiate,NTLM » ».

Et manque de pot, peu d’informations disponibles sur le net. Je suis malgré tout tombé sur un post sur www.developpez.com indiquant comment contourner ce problème. Il suffit de modifier le fichier .config et y préciser que l’on souhaite utiliser une sécurité de type « TransportCredentialOnly » :

<security mode="TransportCredentialOnly">
   <transport clientCredentialType="Windows" proxyCredentialType="Windows" realm="" />
   <message clientCredentialType="UserName" algorithmSuite="Default" />
</security>

Une fois cette étape accomplie, vous devez préciser au service les credentials à utiliser (of course) :

myService.ClientCredentials.Windows.ClientCredential.UserName = "myLogin";
myService.ClientCredentials.Windows.ClientCredential.Password = "myPassword";
Pour marque-pages : permalien.

2 réactions à Tester un service WCF qui requiert une authentification

  1. Damien a écrit:

    Bonjour,

    Dans quelle partie exactement du fichier .Config faut-il mettre ce bloc de balises ?

    Merci d’avance.

    BAV.

    D.Detrain

    • Jean-Michel Ormes a écrit:

      Bonjour Damien,

      Voici la partie complète du fichier de configuation :

      <configuration>
          <system.serviceModel>
              <bindings>
                  <basicHttpBinding>
                      <binding name="MyServiceSoap" closeTimeout="00:01:00"
                          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                          allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                          maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                          messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                          useDefaultWebProxy="true">
                          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                          <security mode="TransportCredentialOnly">
                              <transport clientCredentialType="Windows" proxyCredentialType="Windows"
                                  realm="" />
                              <message clientCredentialType="UserName" algorithmSuite="Default" />
                          </security>
                      </binding>
                  </basicHttpBinding>
              </bindings>
          </system.serviceModel>
      </configuration>
      

      En espérant t’avoir aidé.

      Jean-Michel

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>