我正在尝试访问需要身份验证的Soap Web服务(HTTP)。我正在使用WCF来使用该服务。 我收到错误消息" HTTP请求未经授权使用客户端身份验证方案'基本'。从服务器收到的身份验证标题是' Basic realm =" XXXXX"''。"
然而,当我尝试发送身份验证标头以及每个请求时。当我尝试使用Web服务执行任何操作时,我收到了401错误。
感谢任何帮助,谢谢。
这就是我的代码:
var myBinding = new BasicHttpBinding("exampleBinding");
myBinding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
myBinding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.Basic;
EndpointAddress ea = new EndpointAddress("http://test.co.uk/webservices");
var serviceClient = new ServicesClient(myBinding, ea);
serviceClient.ClientCredentials.UserName.UserName = "username";
serviceClient.ClientCredentials.UserName.Password = "password";
HttpRequestMessageProperty httpRequestProperty = new HttpRequestMessageProperty();
httpRequestProperty.Headers[HttpRequestHeader.Authorization] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(serviceClient.ClientCredentials.UserName.UserName + ":" + serviceClient.ClientCredentials.UserName.Password));
httpRequestProperty.Headers[HttpRequestHeader.ProxyAuthorization] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(serviceClient.ClientCredentials.UserName.UserName + ":" + serviceClient.ClientCredentials.UserName.Password));
using (OperationContextScope scope = new OperationContextScope((IClientChannel)serviceClient.InnerChannel))
{
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;
var response = serviceClient.DepartureBoard(request);
}
Web config
-----------
<bindings>
<basicHttpBinding>
<binding name="jpservicesBinding">
<security mode="Transport">
<transport clientCredentialType="Basic" proxyCredentialType="Basic" realm=""></transport>
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://test.co.uk/webservices"
binding="basicHttpBinding" bindingConfiguration="exampleBinding"
contract="RealTimePlanner.jservices" name="test" />
</client>