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