1

我有一个 ASP.NET 应用程序,它应该读取客户端 CAC 上的证书。

我的环境:Visual Studio 2012 IIS Express

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

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

  • 匿名身份验证 = 已启用
  • SSL 启用 = 真
  • 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:我离这个还远吗?如果是这样,请告知。

谢谢!

4

1 回答 1

0

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

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

于 2014-11-25T17:56:27.977 回答