我希望有人可以帮我解决这个问题,或者至少确认可以做到。
当前,对于我的Web应用程序,当用户提交其登录信息时,我使用tomcat server.xml JNDI Realm配置对Active Directory进行身份验证。
这是当前配置:
Realm
alternateURL="ldaps://xxx.yyy.com:ddd"
className="org.apache.catalina.realm.JNDIRealm"
connectionName="CN=ggg,OU=Generic_IDs,OU=Users,OU=hhh,DC=jjj,DC=com"
connectionPassword="pppp"
connectionURL="ldaps://fff.yyy.com:ddd"
roleBase="ou=Managed_Groups,ou=Groups,ou=hhh Inc,dc=jjj,dc=com"
roleName="cn"
roleSearch="(member={0})"
roleSubtree="false"
userBase="ou=hhh,dc=jjj,dc=com"
userRoleName="(member={0})"
userSearch="(&(sAMAccountName={0})(objectClass=user))"
userSubtree="true"
我的要求:现在,我们在一个单独的服务器上设置了另一个Active Directory中的一些用户。我需要一种方法让服务器首先尝试针对第一台AD服务器对用户进行验证,如果没有成功,则连接到第二台AD并对用户进行身份验证。如果验证失败,则显示拒绝访问页面。
有办法做到这一点吗?
非常感谢帮助。谢谢!
答案 0 :(得分:2)
我使用了下一个领域标签
<Realm className="org.apache.catalina.realm.CombinedRealm" >
<Realm className="org.apache.catalina.realm.JNDIRealm"
connectionURL="ldap://dc01.domain.com:3268"
useDelegatedCredential="true"
userBase="cn=Users,dc=domain,dc=com"
userSearch="(sAMAccountName={0})"
userRoleName="memberOf"
roleSubtree="true"
roleName="cn"
roleSearch="(member={0})"
commonRole="test1"
roleNested="true" />
<Realm className="org.apache.catalina.realm.JNDIRealm"
connectionURL="ldap://dc01.domain.com:3268"
useDelegatedCredential="true"
userBase="cn=Users,dc=domain,dc=com"
userSearch="(sAMAccountName={0})"
userRoleName="memberOf"
roleSubtree="true"
roleName="cn"
roleSearch="(member={0})"
commonRole="test2"
roleNested="true" />
</Realm>
答案 1 :(得分:0)
使用http://tomcatspnegoad.sourceforge.net/,您的使用会很开心。