Asp.Net MVC 中的特定控制器或操作需要启用 SSL 客户端证书

Enabling SSL Client Certificate Required for specific Controller or Action in Asp.Net MVC

是否有任何特定于 MVC 的方法来为 特定的 操作或控制器要求 SSL 客户端证书,即与 RequireHttps 或 Authorize 的工作方式非常相似,但对于 ClientCerts?

我知道在站点中创建一个空文件夹、一个与该文件夹同名的控制器,然后在 web.config 中设置规则的技巧,但我不想这样做这样,我正在寻找一个 MVC 解决方案,如果有的话。

(web.config 技巧的示例:)

  <location path="/ClientCert">
    <system.webServer>
      <security>
        <access sslFlags="Ssl,SslRequireCert" />
      </security>
    </system.webServer>
  </location>

很好奇有没有可以封装在ActionFilter中的方案and/orHttpModule?

我不这么认为。客户端证书在连接协商期间在 IIS 或 HTTP.sys 中处理和映射,这比 MVC 低得多。如果该客户端证书用于与 SSL/TLS 的相互身份验证,则仅需要客户端证书来建立 HTTPS 会话和连接。

这一切都发生在 MVC 或与此相关的任何代码有机会 运行 之前。这发生在 HTTP.sys.

的内核中