2010-10-14 3 views
1

J'essaie de me connecter au service qui est accessible via https et qui nécessite une authentification.Client WCF avec authentification SSL et nom d'utilisateur/mot de passe

L'erreur que je reçois est:

Test method TestProject1.UnitTest1.TestReharB2B threw exception: System.ServiceModel.Security.MessageSecurityException: The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Basic realm="Application"'. ---> System.Net.WebException: The remote server returned an error: (401) Unauthorized..

Il me semble que ce nom d'utilisateur et mot de passe ne sont pas envoyés au service. Qu'est-ce que je rate?

Le code:

EndpointAddress address = new EndpointAddress(
        new Uri("https://84.52.158.151:8443/JavaStore/services/B2BService"), 
         EndpointIdentity.CreateDnsIdentity("JavaStore"), 
         new AddressHeaderCollection() 
       ); 

BasicHttpBinding binding = new BasicHttpBinding(); 
binding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential; 
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName; 

var client = new ReharB2BService.B2BServicePortTypeClient(binding, address); 

client.ChannelFactory.Credentials.UserName.UserName = "dotNet"; 
client.ChannelFactory.Credentials.UserName.Password = "dotnetpwd"; 

client.Open(); 
client.getAllItems(); 

Répondre

2

Votre service renvoie l'erreur parce qu'il ya une mauvaise configuration entre le serveur et le client. Votre client utilise la sécurité du transport avec les informations d'identification du message Nom d'utilisateur. Cela signifie que HTTPS est utilisé et que le message contient un en-tête SOAP avec le nom d'utilisateur et le mot de passe. Mais votre service renvoie l'exception car il (probablement IIS) attend la sécurité du transport avec des informations d'identification de base. Cela signifie l'authentification HTTPS et HTTP Basic (en-tête HTTP).

Questions connexes