我创建了一个具有基本 http 身份验证的自托管 WCF RESTful 服务,该服务通过带有自签名 SSL 证书的 https 运行。一切正常。用户通过网络浏览器访问服务操作。
问题是我的客户现在希望服务用户同时使用基本身份验证(用户名 + 密码)和证书进行身份验证。我无法做到这一点。
我已经看到在 WCF 4.5 中可以有多个身份验证方案。我对此进行了调查,但无济于事。
我也遇到过这个帖子(见最后一个答案),但是当我尝试它时,我得到了这个错误:
“发生异常:HTTPS 侦听器工厂被配置为需要客户端证书和身份验证方案‘基本’。一次只能要求一种形式的身份验证。”
我的配置是在代码中完成的,下面是它的样子(这是有效的版本):
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.Basic;
host.AddServiceEndpoint(typeof(IRestService), wb, baseAdress);
host.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator = new CustomUserNameValidator();
host.Credentials.UserNameAuthentication.UserNamePasswordValidationMode = UserNamePasswordValidationMode.Custom;
host.Description.Endpoints[0].Behaviors.Add(new WebHttpBehavior { HelpEnabled = true });
host.Open();
感谢您的任何提示,