2010-08-16 3 views

Répondre

0

Cela devrait couvrir: http://msdn.microsoft.com/en-us/library/ms733775.aspx (Voir la section client)

+0

La question demande spécifiquement au sujet (HTTP) l'authentification de base. Votre référence liée ne fait que démontrer WSHttpBinding. WSHttpBinding utilise les informations d'identification de nom d'utilisateur et de mot de passe dans le bloc d'authentification de l'en-tête de l'enveloppe SOAP, ce qui n'est pas la même chose que l'authentification de base (HTTP). – AlwaysLearning

0

Je dirais qu'il est susceptible de dépendre de la façon dont le service Web vous attend à transmettre les informations. Après tout, vous êtes seulement le consommateur. Cela dit, il est courant que les services Web aient l'ID utilisateur et le mot de passe transmis dans l'en-tête SOAP.

Vous pouvez consulter cette link pour une mise en œuvre de l'échantillon de ce scénario

Savon message échantillon

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Header> 
    <AUTHHEADER xmlns="http://tempuri.org/"> 
     <USERNAME>string</USERNAME> 
     <PASSWORD>string</PASSWORD> 
    </AUTHHEADER> 
    </soap:Header> 
    <soap:Body> 
    <SENSITIVEDATA xmlns="http://tempuri.org/" /> 
    </soap:Body> 
</soap:Envelope> 
21

L'authentification de base configuré dans le fichier de configuration? Avez-vous besoin de transmettre uniquement des informations d'identification ou avez-vous également besoin d'un transport sécurisé (HTTPS)?

Vous devez d'abord configurer la liaison pour soutenir l'authentification de base

Configuration pour liaison HTTP:

<bindings> 
    <basicHttpBinding> 
    <binding name="BasicAuth"> 
     <security mode="TransportCredentialOnly"> 
     <transport clientCredentialType="Basic" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 
</bindings> 

Configuration pour liaison HTTPS:

<bindings> 
    <basicHttpBinding> 
    <binding name="BasicAuthSecured"> 
     <security mode="Transport"> 
     <transport clientCredentialType="Basic" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 
</bindings> 

point de terminaison client doit utiliser la configuration définie comme:

<client> 
    <endpoint address="..." 
      name="..." 
      binding="basicHttpBinding" 
      bindingConfiguration="BasicAuth" 
      contract="..." /> 
</client> 

Ensuite, vous devez passer les informations d'identification du mandataire:

proxy = new MyServiceClient(); 
proxy.ClientCredentials.UserName.UserName = "..."; 
proxy.ClientCredentials.UserName.Password = "..."; 
Questions connexes