我有一个ASP.NET应用程序,可以在客户端CAC上读取证书。
我的环境: Visual Studio 2012 IIS Express
在IIS Express中,我正在为客户端和服务器运行两个单独的站点。身份验证在服务器上进行。
我的服务器和客户端项目在VS中具有以下属性:
在两个站点的Web.config文件中,通过引用另一个站点
https://localhost:<port>
在服务器的代码中,有一行:
string mycert = HttpContext.Request.ClientCertificate.Subject;
这是假设从CAC卡请求客户的证书。这是我遇到麻烦的地方,因为我认为与客户证书有关的所有字段都没有值(空或零)。
Q_1:如何阅读客户端的CAC证书,以便我可以在服务器上进行身份验证?
Q_2:我需要更改web.config文件中的内容吗?
Q_2B:我看过有关oneToOneMapping的问题可能就是问题吗?
Q_3:我还远吗?如果是这样,请告知。
谢谢!
答案 0 :(得分:0)
我不知道这是否有帮助,但在IIS集成模式下,HttpContext事件完成后才会填充HttpContext。如果您在应用程序生命周期中过早地使用了违规代码,则这些值将不存在。
如果您考虑它,这是有道理的,因为您不希望在特定用户的上下文中初始化整个应用程序。因此,要访问您的证书,您需要从特定页面或HttpHandler执行此操作。