在 IIS 中,我可以“忽略”、“允许”和“要求”客户端证书。
在 ASP.NET WebAPI(不久前刚刚推出的 4.0 版)中,我似乎只能“忽略”或“要求”。
默认情况下,客户端证书被忽略......所以这个语句总是产生空值:
var cert = actionContext.Request.GetClientCertificate();
但是,如果我在我的配置中设置这个标志:
config.ClientCredentialType = HttpClientCredentialType.Certificate;
然后我获得了客户端证书...但是,我不再能够允许匿名访问。
我的匿名客户端现在收到 403
错误:“远程服务器返回错误:(403) Forbidden。”
我可以像在 IIS 中那样做某种“允许”吗?
最佳答案
这是在自托管场景中使用 X509 证书的已知限制。实际限制来自 WCF 中的基础传输绑定(bind),它没有关于客户端证书的允许选项。
但是,您可以使用其他选项允许多个身份验证方案,例如匿名和窗口。我们正在与 WCF 团队合作,看看我们是否可以添加匿名和 x509 证书的支持。
希望这能澄清。
关于c# - ASP.NET WebApi - 如何获得 "allow"而不是 "require"客户端证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12308434/