1

http://support.microsoft.com/kb/892424

在 Active Directory 上设置“交互式登录需要智能卡”时,它会生成一个随机密码。如何使用智能卡通过 LDAP 从 Web 应用程序对用户进行身份验证?

我怎么知道用户是谁?有没有办法访问证书?我可以从会话中得到它吗?

4

1 回答 1

1

为此应使用 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)仍可用于授权 - 例如通过检查用户是否属于某个组。

第一次设置它可能很困难。为了熟悉所有概念,我推荐以下方法:

  • 将 BASIC auth-method 与存储在文件中的用户名和密码一起使用
  • 使用简单的基于角色的授权
  • 启用 CLIENT-CERT auth-method + 简单的基于角色的授权
  • 合并 LDAP 以检查角色
于 2009-05-20T06:53:12.527 回答