使用客户端证书进行智能卡身份验证

使用客户端证书进行智能卡身份验证

问题描述:

我有第三方Web应用程序,现在我的管理员希望将智能卡身份验证添加到某些页面(而不是整个应用程序)并返回证书信息。我在想为这些页面添加按钮,并且在onclick事件中,我将执行客户端证书身份验证(在出现证书选择窗口后会显示“PIN”窗口)并返回证书对象以供进一步处理。使用客户端证书进行智能卡身份验证

我最初考虑过一个Web服务来执行客户端证书身份验证并返回证书信息,这很好,因为我们可能会考虑在其他Web应用程序(在不同的平台上)使用该Web服务。但是,我找不到任何代码示例。然后我找到了IIS solution

我现在创建了一个单独的文件夹,其中包含需要客户端证书的页面。在按钮点击事件上,我重定向到该页面。然后在该页面上,我使用X509Certificate类检索证书信息。我不认为这对我所做的事情有帮助,或者至少我不知道它有什么用处。

所以我的问题是(很抱歉的长期背景描述)

  1. 如何我也可以把从认证结果页面回来?
  2. 如果可能的话,有关如何建立一个Web服务,以IIS的相同方式执行客户端证书身份验证的任何参考?

感谢

更新 我环顾四周,仍然没有就如何实现这一线索。我不确定如何在Web服务的SSL/TLS握手阶段进行编码。我不知道如何将认证返回到我调用此函数的页面。所以我现在想要做的是从需要客户端认证的受保护页面重定向。看起来Web服务器缓存了认证结果。这是我的第三个问题,我希望有人能回答。

如何在页面会话结束时清除身份验证结果,以便每次访问页面时都会请求客户端身份验证(在出现证书选择窗口后会显示“PIN”窗口)?

如果您的应用程序托管在IIS中,那么只需在web.config中添加一段说明这些页面需要客户端证书的部分。然后浏览器会要求用户提供证书。

+0

感谢您的回复。我在IIS中检查了SSL设置为必需的文件夹。这还不够吗? – user1541389 2012-08-07 20:43:01

+0

它应该是 - 假设客户端系统(浏览器等)设置为使用智能卡证书 – pm100 2012-08-07 22:53:58

+0

这是发生了什么事。我有一个不在受限制文件夹页面1下的页面。在页面1的脚本中,我使用重定向到页面(页面2),该页面在IIS中要求具有SSL设置的文件夹下的客户端证书。当我第一次访问page1时,它会提示证书选择窗口,然后显示PIN窗口,然后显示page2。然后关闭窗口,打开一个新窗口,输入第1页的地址,这次证书选择窗口显示,在我选择相同证书后,它不会用PIN窗口挑战我,只显示page2。我希望PIN窗口始终触发 – user1541389 2012-08-08 12:11:02

Windows具有缓存功能,默认情况下,该功能允许应用程序在初始PIN提示后或在应用程序完全关闭之前的有限时间内访问私钥。

要禁用,请设置此注册表项。 (或使用GPO)

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Cryptography] 
"PrivKeyCacheMaxItems"=dword:00000000 
"PrivKeyCachePurgeIntervalSeconds"=dword:00000000