要求使用 WCF 进行 SSL 会导致"The HTTP request was forbidden with client authentication scheme 'Anonymous'"错



我们有一个托管在IIS中的WCF服务,客户端dll正在尝试访问它。该服务在IIS中绑定为使用HTTPS,并设置为忽略客户端证书,这工作得很好,但要求SSL会导致问题。

的事情,我真的不明白的是,调用一个服务的方法工作得很好,但调用另一个方法不工作,我得到以下错误:" HTTP请求被禁止与客户端身份验证方案'匿名'。system.net.webeexception:远程服务器返回错误:(403)禁止。"

是什么原因导致的?我对WCF很陌生,所以如果我错过了什么,或者是否需要更多的信息,请让我知道。

下面是一些服务配置代码:

this.Description.Behaviors.Add(new FaultConversionErrorHandler());
this.Description.Behaviors.Add(new LoggingErrorHandler());
BasicHttpBinding binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.Transport;
ServiceEndpoint endpoint = this.AddServiceEndpoint(typeof(ILicenseService), binding, String.Empty);
SecurityEndpointBehavior securityEndpointBehavior = new SecurityEndpointBehavior();
endpoint.Behaviors.Add(securityEndpointBehavior);

下面是客户端如何引用服务:

EndpointAddress a = new EndpointAddress(licenseServiceUrl);
Binding b = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
LicenseServiceClient client = new LicenseServiceClient(b, a);
client.Endpoint.Behaviors.Add(new SecurityEndpointBehavior());

您可以通过更改绑定信息来解决这个问题。在IIS SSL设置中将TransportClientCredential Type设置为certificate,以使用所需的证书。

如果是Ws-Http,那就有点不同了。WCF WS-service主机实际上正在检查传入的客户机请求证书是否存在于可信人员中。因此,远程证书应该呈现在服务器信任的人员中。

相关内容

最新更新