2

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

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

有没有办法做到这一点?

将不胜感激。谢谢!

4

2 回答 2

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>
于 2017-03-31T23:30:43.347 回答
0

使用http://tomcatspnegoad.sourceforge.net/你会很开心。

于 2015-10-14T17:34:40.413 回答