如何使用“交互式登录需要智能卡”设置来验证用户?

时间:2009-05-19 21:01:16

标签: java active-directory smartcard pki

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

在Active Directory上设置“交互式登录需要智能卡”时,会生成随机密码。如何利用智能卡通过Web应用程序通过LDAP验证用户?

我如何知道用户是谁?有没有办法访问证书?我可以从会议中获得它吗?

1 个答案:

答案 0 :(得分:1)

应该使用HTTPS和SSL相互身份验证,因为客户端已经在其存储的智能卡上至少拥有公司CA签名证书。

当使用相互SSL身份验证而不仅仅是服务器身份验证时,客户端证书也会由服务器验证,而不仅仅是客户端的服务器证书(对于例如支持HTTPS的电子商务站点,这是更常见的设置)。而且您仍然可以获得加密连接作为奖励。

参见例如Tomcat 6.0 SSL Configuration HOW-TO。关键点是将trust-store和clientAuth属性中的CA证书设置为true。

还应在相应Web应用程序的web.xml中的CLIENT-CERT中指定login auth-method:

...
<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身份验证方法+基于角色的简单授权
  • 合并LDAP以检查角色