JBoss 7.1.0安全域:多个LDAP - 顺序,而不是故障转移

时间:2015-07-28 20:02:19

标签: jboss ldap jboss7.x

到目前为止,除了谈论故障转移之外,我无法找到针对多个LDAP服务器进行身份验证的帮助。

我们为内部用户提供LDAP,为外部用户提供LDAP。突然之间,我们的应用程序需要供内部用户和外部用户使用。我该如何设置呢?

以下是仅供内部用户使用的当前配置:

<security-domain name="dc-ldap-auth">
    <authentication>
        <login-module code="LdapExtended" flag="required">
            <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
            <module-option name="java.naming.provider.url" value="ldap://dvldap-1.example.com:389"/>
            <module-option name="java.naming.security.authentication" value="simple"/>
            <module-option name="bindDN" value="uid=someid,ou=People,ou=Intranet,o=example.com"/>
            <module-option name="bindCredential" value="somecred"/>
            <module-option name="baseCtxDN" value="ou=People,ou=Intranet,o=example.com"/>
            <module-option name="baseFilter" value="(uid={0})"/>
            <module-option name="rolesCtxDN" value="ou=Groups,ou=Intranet,o=example.com"/>
            <module-option name="roleFilter" value="(uniqueMember={1})"/>
            <module-option name="roleRecursion" value="0"/>
            <module-option name="roleAttributeID" value="cn"/>
            <module-option name="searchScope" value="ONELEVEL_SCOPE"/>
        </login-module>
    </authentication>
</security-domain>

1 个答案:

答案 0 :(得分:1)

如果您需要简单的配置

只需使用JAAS提供的功能。将这两个配置添加到登录模块链,并将其中第一个flag设置为sufficient值(查看Configuration类以获取所有选项及其说明。)

为获得最佳性能:第一个配置应该是用户更经常进行身份验证的配置。

<security-domain name="dc-ldap-auth">
    <authentication>
        <login-module code="LdapExtended" flag="sufficient">
            <module-option name="java.naming.provider.url"
                           value="ldap://internal-ldap.my-company.example"/>
            <!-- add other options for the first LDAP server -->
        </login-module>
        <login-module code="LdapExtended" flag="required">
            <module-option name="java.naming.provider.url"
                           value="ldap://external-ldap.my-company.example"/>
            <!-- add other options for the second LDAP server -->
        </login-module>
    </authentication>
</security-domain>

如果您需要出色的表现

如果您能够确定(例如,从登录名)您应该搜索哪个LDAP,那么我建议您实施自己的登录模块。它可以将处理委托给LdapExtLoginModule个实例。