我创建了一个具有基本 http 身份验证的自托管 WCF RESTful 服务,该服务通过带有自签名 SSL 证书的 https 运行。一切正常。当用户通过网络浏览器访问服务操作时,他们会弹出一个询问凭据(登录名/密码)的窗口。
现在我想做证书认证而不是基本认证,但它不起作用。客户端的浏览器(IE/chrome/firefox)从不提示选择证书,我总是收到 HTTP 403 错误,并且当我在自定义证书验证器中设置断点时,它永远不会命中。所以我肯定在这里遗漏了一些东西。我尝试使用 Fiddler 进行调试,它确认请求中没有身份验证标头。
这是我托管服务的代码。
Uri baseAdress = new Uri("https://localhost:8446/");
WebServiceHost host = new WebServiceHost(typeof(RestService));
WebHttpBinding wb = new WebHttpBinding();
wb.Security.Mode = WebHttpSecurityMode.Transport;
wb.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
host.AddServiceEndpoint(typeof(IRestService), wb, baseAdress);
host.Credentials.ClientCertificate.Authentication.CertificateValidationMode =
X509CertificateValidationMode.Custom;
host.Credentials.ClientCertificate.Authentication.CustomCertificateValidator =
new MyX509CertificateValidator()
host.Open();
感谢您的任何提示。