0

我创建了一个具有基本 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(); 

感谢您的任何提示,

4

1 回答 1

0

单个端点上的多重身份验证适用于 Web 托管方案(不是自托管)。您可以通过说 clientCredentialType='InheritFromHost' 在 Web 主机中进行配置,并在 vdir 身份验证中设置要为该特定端点设置的所有身份验证方案。查看文档以获取标题“多重身份验证支持”。

已添加多身份验证支持支持,以在使用 HTTP 传输和传输安全性时在单个 WCF 终结点上支持 IIS 支持的多种身份验证模式。IIS 允许您在虚拟目录上启用多种身份验证模式,此功能允许单个 WCF 端点支持为托管 WCF 服务的虚拟目录启用的多种身份验证模式。

于 2013-04-03T16:48:03.050 回答