为Asp.Net MVC中的特定Controller或Action启用SSL客户端证书

pet*_*er3 5 asp.net client-certificates ssl-certificate asp.net-mvc-5

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

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

(web.config技巧示例:)

  <location path="/ClientCert">
    <system.webServer>
      <security>
        <access sslFlags="Ssl,SslRequireCert" />
      </security>
    </system.webServer>
  </location>
Run Code Online (Sandbox Code Playgroud)

我很好奇是否有可以封装在ActionFilter和/或HttpModule中的解决方案?

vcs*_*nes 3

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

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