ASP.NET WebApi - 如何“允许”但不“需要”客户端证书?

时间:2012-09-06 21:09:42

标签: c# security ssl asp.net-web-api client-certificates

在IIS中,我可以“忽略”,“允许”和“要求”客户端证书。

在ASP.NET WebAPI(刚刚推出的版本4.0)中,我似乎只能“忽略”或“需要”。

默认情况下,客户端证书被忽略...因此该语句总是产生null:

var cert = actionContext.Request.GetClientCertificate();

但是,如果我在配置上设置了这个标志:

config.ClientCredentialType = HttpClientCredentialType.Certificate;

然后我获得了客户端证书......但是,我不再能够允许匿名访问。

我的匿名客户端现在收到403错误:“远程服务器返回错误:(403)禁止。”

我可以在IIS中执行某种“允许”吗?

2 个答案:

答案 0 :(得分:2)

这是在自主机方案中使用X509证书的已知限制。实际限制来自WCF中的基础传输绑定,它没有关于客户端证书的 allow 选项。

但是,您可以允许使用其他选项进行多种身份验证方案,例如匿名和Windows。我们正在与WCF团队合作,以了解我们是否可以使用匿名和x509证书添加该支持。

希望这澄清。

答案 1 :(得分:0)

提供的证书是否无效? 如果是这种情况,以下内容可以帮助您: RemoteCertificateValidationCallback