如何让LDAP搜索使用Kerberos票证来避免使用明文密码

时间:2009-09-21 22:01:44

标签: tomcat ldap kerberos jaas

我有一个Tomcat配置,它使用Kerberos 5根据AD服务器对用户进行身份验证,然后使用LDAP获取针对安全约束的授权角色。

server.xml包含:

<Realm className="org.apache.catalina.realm.JAASRealm"
                   appName="vt-ldap"
                   userClassNames="edu.vt.middleware.ldap.jaas.LdapPrincipal"
                   roleClassNames="edu.vt.middleware.ldap.jaas.LdapRole"/>

并且jaas配置文件具有:

vt-ldap {
   com.sun.security.auth.module.Krb5LoginModule required
     storePass="true"
     debug="true";

   edu.vt.middleware.ldap.jaas.LdapDnAuthorizationModule required
     serviceUser="CN=LIM User,OU=LIMGenericAccounts,DC=lim,DC=com"
     serviceCredential="password"
     useFirstPass="true"
     setLdapPrincipal="true"
     setLdapDnPrincipal="true"
     tls="false"
     subtreeSearch="true"
     logCredentials="true"
     storePass="true"
     ldapUrl="ldap://auswa01.lim.com:389"
     base="ou=LIMUsers,dc=lim,dc=com"
     userField="sAMAccountName";

   edu.vt.middleware.ldap.jaas.LdapRoleAuthorizationModule required
     serviceUser="CN=LIM User,OU=LIMGenericAccounts,DC=lim,DC=com"
     serviceCredential="password"
     useFirstPass="true"
     setLdapPrincipal="true"
     setLdapDnPrincipal="true"
     tls="false"
     subtreeSearch="true"
     logCredentials="true"
     storePass="true"
     ldapUrl="ldap://auswa01.lim.com:389"
     base="ou=LIMGroups,dc=lim,dc=com"
     roleFilter="(member={0})"
     roleAttribute="sAMAccountName";
};

Kerberos身份验证效果很好。但在后续阶段(从用于授权的LDAP获取角色)中,serviceCredential(密码)以明文形式在LAN上传递。

有没有办法避免以明文形式发送密码?也许有一种方法可以使用Kerberos票证而不是serviceUser / serviceCredential info(?)来访问LDAP以获取角色......

任何?

2 个答案:

答案 0 :(得分:1)

我已经检查过virgia技术代码但它不会这样做。我必须使用或重复使用kerberos票证并使用它对您的目录进行身份验证。 virgia技术代码似乎support。我做了简单的绑定,这是你能做的最糟糕的事情。 如果你有kerberos,你根本不需要SSL。您可以请求kerberos加密整个通信。

答案 1 :(得分:0)

这就是您使用LDAP over SSL的原因。然后在LDAP数据包内清除密码,但在点击线路之前加密。