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

时间:2012-08-01 13:43:03

标签: c# authentication iis client-certificates

我有第三方网络应用程序,现在我的经理想要将智能卡身份验证添加到某些页面(而不是整个应用程序)并返回证书信息。我想的是向这些页面添加按钮,在onclick事件中,我将进行客户端证书身份验证(其中将出现证书选择窗口,然后是“PIN”窗口)并返回证书对象进一步处理。

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

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

所以我的问题是(抱歉长篇背景说明)

  1. 如何使用认证结果重定向该页面?
  2. 如果可能的话,有关如何建立以与IIS相同的方式进行客户端证书身份验证的Web服务的任何参考?
  3. 由于

    更新 我环顾四周,仍然不知道如何实现这一目标。我不确定如何在SSL / TLS握手阶段为Web服务编写代码。我不知道如何将认证返回到我调用此功能的页面。所以我现在要做的是从需要客户端身份验证的受保护页面重定向。似乎Web服务器缓存了身份验证结果。这是我的第三个问题,希望有人能回答。

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

2 个答案:

答案 0 :(得分:3)

如果您的应用程序托管在IIS中,则只需添加(在web.config中)一个部分,其中说明这些页面需要客户端证书。然后,浏览器将询问用户是否有证书。

答案 1 :(得分:1)

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

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

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