具有ssl和用户名/密码身份验证的WCF客户端

时间:2010-10-14 19:05:45

标签: visual-studio wcf authentication ssl

我正在尝试连接到可通过https访问并需要身份验证的服务。

我得到的错误是:

  

测试方法   TestProject1.UnitTest1.TestReharB2B   抛出异常:   System.ServiceModel.Security.MessageSecurityException:   HTTP请求未经授权   客户认证方案   '匿名'。身份验证标头   从服务器收到的是'基本的   境界=“应用程序””。 --->   System.Net.WebException:远程   服务器返回错误:(401)   未经授权..

在我看来,用户名和密码不会发送到服务。我错过了什么?

代码:

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();

1 个答案:

答案 0 :(得分:2)

您的服务返回错误,因为服务器和客户端之间存在一些错误配置。您的客户端使用带有UserName消息凭据的传输安全性。这意味着使用了HTTPS,消息包含带有用户名和密码的SOAP标头。但是您的服务返回异常,因为它(可能是IIS)期望使用Basic凭据的传输安全性。这意味着HTTPS和HTTP基本身份验证(HTTP标头)。

相关问题