通过代码请求客户端证书

Request client certificate through code

IIS 中有一个请求客户端证书的选项,但我想知道是否有任何方法可以通过代码来实现。有什么方法可以扩展 RequireHttpsAttribute 操作过滤器以要求客户端证书?

我不关心自动证书-用户映射或其他任何东西,只要我能从 Request.ClientCertificate 获得证书就可以了。

我怀疑这是否可行,因为客户端证书协商不是 http 协议的一部分。它位于 TSL 协议的深处,不容易(如果有的话)从您的代码中访问。

TechNet blogpost 描述了在与 IIS 进行客户端证书协商期间发生的情况。

IIS 允许您仅针对特定 URL 要求客户端证书,因此请更改您的代码以在需要客户端证书时使用一个 URL,如果不需要则使用另一个。