1

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

server.xml 有这个:

<领域类名称="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 需要
     商店通行证=“真”
     调试=“真”;

   edu.vt.middleware.ldap.jaas.LdapDnAuthorizationModule 需要
     serviceUser="CN=LIM 用户,OU=LIMGenericAccounts,DC=lim,DC=com"
     serviceCredential="密码"
     使用FirstPass =“真”
     setLdapPrincipal="真"
     setLdapDnPrincipal="真"
     tls="假"
     子树搜索=“真”
     logCredentials="true"
     商店通行证=“真”
     ldapUrl="ldap://auswa01.lim.com:389"
     base="ou=LIMUsers,dc=lim,dc=com"
     userField="sAMAccountName";

   edu.vt.middleware.ldap.jaas.LdapRoleAuthorizationModule 需要
     serviceUser="CN=LIM 用户,OU=LIMGenericAccounts,DC=lim,DC=com"
     serviceCredential="密码"
     使用FirstPass =“真”
     setLdapPrincipal="真"
     setLdapDnPrincipal="真"
     tls="假"
     子树搜索=“真”
     logCredentials="true"
     商店通行证=“真”
     ldapUrl="ldap://auswa01.lim.com:389"
     base="ou=LIMGroups,dc=lim,dc=com"
     roleFilter="(成员={0})"
     roleAttribute="sAMAccountName";
};

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

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

任何人?

4

2 回答 2

1

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

于 2011-07-06T07:45:26.657 回答
0

这就是您使用 LDAP over SSL 的原因。然后密码在 LDAP 数据包中是明确的,但在连接之前已加密。

于 2009-09-22T14:08:00.730 回答