J'ai un service WCF SOAP qui utilise l'authentification d'accès de base. SSL n'est pas utilisé - Je comprends les problèmes de sécurité ici. En utilisant l'application WCFTestClient, j'ai vérifié que le service fonctionne en codant temporairement dans le service un nom d'utilisateur et un mot de passe à utiliser lorsque l'en-tête Authorization
n'est pas présent.Comment utiliser une référence de service avec une authentification de base Service SOAP WCF
J'essaie maintenant d'écrire une application de test qui transmet les informations d'identification via l'en-tête Authorization
. J'ai ajouté une référence de service à mon service dans mon application de test, mais l'en-tête Authorization
n'est pas présent dans la demande http. Le produit MyServiceClient
classe utilise System.ServiceModel.ClientBase
Dans mon application test, je suis en train de les lettres de créance comme suit
MyServiceClient client = new MyServiceClient("BasicHttpBinding_MyService");
client.ClientCredentials.UserName.UserName = "WebServiceUsername";
client.ClientCredentials.UserName.Password = "WebServicepassword";
J'ai aussi essayé comme suit
MyServiceClient client = new MyServiceClient();
ClientCredentials loginCredentials = new ClientCredentials();
loginCredentials.UserName.UserName = "WebServiceUsername";
loginCredentials.UserName.Password = "WebServicepassword";
client.Endpoint.Behaviors.Remove(client.Endpoint.Behaviors.Find<ClientCredentials>());
client.Endpoint.Behaviors.Add(loginCredentials);
Le web.config de service est la suivante
<services>
<service name="MyService" behaviorConfiguration="MyBehavior" >
<endpoint contract="MyService" binding="basicHttpBinding" />
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
Le test app.config est comme suit ws
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_MyService">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:55314/MyService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_MyService"
contract="MyService" name="BasicHttpBinding_MyService" />
</client>
</system.serviceModel>
</configuration>
Vous ne savez pas ce que je manque?
pouvez-vous montrer l'exemple de xml qui doit être envoyé? –
Je ne suis pas sûr de savoir comment cela pourrait aider car j'utilise l'authentification de base. WCF remet toute la sérialisation vers et depuis XML, je ne la génère jamais. Je peux essayer d'obtenir une décharge de WireShark si vous pensez que ti pourrait vous aider. –
Est-ce que votre service ou vous essayez d'envoyer SOAP au service de quelqu'un d'autre? –