HTTPContext没有在ASP.NET和iis express中找到客户端CAC证书

时间:2014-11-25 17:00:40

标签: c# asp.net ssl iis-express cac

我有一个ASP.NET应用程序,可以在客户端CAC上读取证书。

我的环境: Visual Studio 2012 IIS Express

在IIS Express中,我正在为客户端和服务器运行两个单独的站点。身份验证在服务器上进行。

我的服务器和客户端项目在VS中具有以下属性:

  • 匿名身份验证=已启用
  • SSL Enabled = True
  • Windows身份验证=已停用
  • 管理管道模式=集成

在两个站点的Web.config文件中,通过引用另一个站点 https://localhost:<port>

在服务器的代码中,有一行: string mycert = HttpContext.Request.ClientCertificate.Subject;
这是假设从CAC卡请求客户的证书。这是我遇到麻烦的地方,因为我认为与客户证书有关的所有字段都没有值(空或零)。

Q_1:如何阅读客户端的CAC证书,以便我可以在服务器上进行身份验证?
Q_2:我需要更改web.config文件中的内容吗?
Q_2B:我看过有关oneToOneMapping的问题可能就是问题吗?
Q_3:我还远吗?如果是这样,请告知。

谢谢!

1 个答案:

答案 0 :(得分:0)

我不知道这是否有帮助,但在IIS集成模式下,HttpContext事件完成后才会填充HttpContext。如果您在应用程序生命周期中过早地使用了违规代码,则这些值将不存在。

如果您考虑它,这是有道理的,因为您不希望在特定用户的上下文中初始化整个应用程序。因此,要访问您的证书,您需要从特定页面或HttpHandler执行此操作。