我有一个 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 信息(?)来获取角色......
任何人?