我有一个客户想在我们的网站上实施 CAC。通常,用户已经拥有基于分配给他们的证书的访问权限。
他们希望通过在单击按钮登录时输入他们的 CAC PIN 码来进行验证。
我正在使用 ActivClient 来管理 CAC,但我不知道如何让网站与读卡器通信以让用户输入密码并进行验证。
这是通过 IIS 设置完成的,还是我必须更新我的代码才能以某种方式与中间件通信?
提前致谢
我有一个客户想在我们的网站上实施 CAC。通常,用户已经拥有基于分配给他们的证书的访问权限。
他们希望通过在单击按钮登录时输入他们的 CAC PIN 码来进行验证。
我正在使用 ActivClient 来管理 CAC,但我不知道如何让网站与读卡器通信以让用户输入密码并进行验证。
这是通过 IIS 设置完成的,还是我必须更新我的代码才能以某种方式与中间件通信?
提前致谢
我们使用的解决方案涉及对 IIS 的一些配置更改以及一些代码更改以使用 CAC 提供的信息。
在 IIS (8.0) 中,我们只是将身份验证设置为匿名身份验证。在 SSL 设置中,我们选中了要求 SSL,在客户端证书下,选择要求选项。
验证后,根据您需要从证书中访问哪些信息,您可以使用以下方法访问它:
X509Certificate2 certificate = new X509Certificate2(Request.ClientCertificate.Certificate);
这将为您提供包含 CAC 携带的信息的证书对象。您可以通过使用访问其中一些属性
certificate.GetNameInfo(X509NameType.SimpleName); //X509NameType.EmailName, etc
我最近与国防部处理了这个问题。不涉及任何代码,您只需将 IIS 站点设置为使用集成安全性(或可能基于您的 AD 配置的证书身份验证)并关闭其他身份验证机制。然后,浏览器将使用 Active Directory 中配置的方法提示用户输入凭据,如果用户正确使用 AD,则应显示 CAC 证书选择和 PIN 窗口。请注意,您还必须使用 HTTPS,否则出于安全原因,浏览器不会将 CAC 凭据传递给服务器。