c# - ASP.NET WebApi - 如何获得 "allow"而不是 "require"客户端证书?

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

在 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/

相关文章:

c# - Observable<string> 更新事件?

c# - 如何将带有日期和时间的字符串转换为 DateTime 数据类型?

c++ - 为什么 LogonUserW 失败并显示错误代码 183 (ERROR_ALREADY_EXISTS)

security - 何时对数据库使用 TLS

c# - Microsoft 如何从 DLL 的元数据中隐藏 C# 内部类?

C# 生成查询以将 DateTime 与 SQL Nvarchar 日期列进行比较

java - tomcat中的Spring警告输出 "Failed to create a session"

Java 安全策略 : granting access depending on classloader

ssl - 证书异常 : No name matching localhost found using OAuth2RestTemplate NOT RestTemplate

ssl - 使用 des3 生成私钥卡住了