http://support.microsoft.com/kb/892424
在 Active Directory 上设置“交互式登录需要智能卡”时,它会生成一个随机密码。如何使用智能卡通过 LDAP 从 Web 应用程序对用户进行身份验证?
我怎么知道用户是谁?有没有办法访问证书?我可以从会话中得到它吗?
http://support.microsoft.com/kb/892424
在 Active Directory 上设置“交互式登录需要智能卡”时,它会生成一个随机密码。如何使用智能卡通过 LDAP 从 Web 应用程序对用户进行身份验证?
我怎么知道用户是谁?有没有办法访问证书?我可以从会话中得到它吗?
为此应使用 HTTPS 和 SSL 相互身份验证,因为客户端已在其智能卡上存储了至少公司 CA 签名的证书。
当使用相互 SSL 身份验证而不是服务器身份验证时,客户端证书也由服务器验证,而不仅仅是客户端的服务器证书(这是更常见的设置,例如启用 HTTPS 的电子商务站点)。而且您仍然可以获得加密连接作为奖励。
参见例如Tomcat 6.0 SSL Configuration HOW-TO。关键点是将信任库中的 CA 证书和 clientAuth 属性设置为 true。
登录身份验证方法还应在相应 Web 应用程序的 web.xml 中指定给 CLIENT-CERT:
...
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Foo * Bar * Realm</realm-name>
</login-config>
...
来自客户端证书的 SubjectDN 属性用于识别用户。LDAP(或 ActiveDirectory)仍可用于授权 - 例如通过检查用户是否属于某个组。
第一次设置它可能很困难。为了熟悉所有概念,我推荐以下方法: