使用tomcat和JNDI对多个AD组进行用户身份验证

时间:2015-10-14 15:22:33

标签: tomcat authentication active-directory jndi server.xml

我希望有人可以帮我解决这个问题,或者至少确认可以做到。

当前,对于我的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并对用户进行身份验证。如果验证失败,则显示拒绝访问页面。

有办法做到这一点吗?

非常感谢帮助。谢谢!

2 个答案:

答案 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/,您的使用会很开心。