JBoss-连接和验证两个域中的用户

JBoss-连接和验证两个域中的用户,jboss,active-directory,ldap,Jboss,Active Directory,Ldap,我遇到了一个关于JBoss的问题,在两个不同的Active Directory域中验证用户。我想将JBoss配置为能够根据用户帐户的创建位置(域A或域B)通过LDAP对用户进行身份验证。这是我对域a配置的一部分。我如何调整它,所以JBoss将首先检查用户是否在域a中,如果不在域B中,并在找到他后对其进行正确的身份验证?域之间的信任设置正确。关于用户的信息-他们是在不同的OU中创建的。JBoss版本是6.4,在域模式下运行。我有一个域B的第二个配置,它工作正常,我只需要以某种方式将其添加到当前配置

我遇到了一个关于JBoss的问题,在两个不同的Active Directory域中验证用户。我想将JBoss配置为能够根据用户帐户的创建位置(域A或域B)通过LDAP对用户进行身份验证。这是我对域a配置的一部分。我如何调整它,所以JBoss将首先检查用户是否在域a中,如果不在域B中,并在找到他后对其进行正确的身份验证?域之间的信任设置正确。关于用户的信息-他们是在不同的OU中创建的。JBoss版本是6.4,在域模式下运行。我有一个域B的第二个配置,它工作正常,我只需要以某种方式将其添加到当前配置中,这样在验证用户时就不会出现错误和问题

<security-domain name="SECDOMAIN_1" cache-type="default">
<authentication>
<login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="required">
<module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
<module-option name="java.naming.provider.url" value="ldap_addres:port"/>
<module-option name="bindDN" value="ad_user_used_to_authenticate_in_domain"/>
<module-option name="bindCredential" value="password_for_user"/>
<module-option name="baseCtxDN" value="dc=xxx,dc=yyy"/>
<module-option name="baseFilter" value="(sAMAccountName={0})"/>
<module-option name="rolesCtxDN" value="dc=xxx,dc=yyy"/>
<module-option name="roleFilter" value="(member={1})"/>
<module-option name="roleAttributeID" value="memberOf"/>
<module-option name="roleAttributeIsDN" value="true"/>
<module-option name="roleNameAttributeID" value="ou"/>
<module-option name="allowEmptyPasswords" value="false"/>
<module-option name="throwValidateError" value="true"/>
<module-option name="searchScope" value="SUBTREE_SCOPE"/>
</login-module>
</authentication>
</security-domain>

我已经设法找到了这个问题的解决方案。我所要做的就是在安全域中创建另一个登录模块,并将要求更改为可选。应该是这样的:

<security-domain name="SECDOMAIN_1" cache-type="default">
<authentication>
<login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="optional">
<module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
<module-option name="java.naming.provider.url" value="ldap_addres:port"/>
<module-option name="bindDN" value="ad_user_used_to_authenticate_in_domain"/>
<module-option name="bindCredential" value="password_for_user"/>
<module-option name="baseCtxDN" value="dc=xxx,dc=yyy"/>
<module-option name="baseFilter" value="(sAMAccountName={0})"/>
<module-option name="rolesCtxDN" value="dc=xxx,dc=yyy"/>
<module-option name="roleFilter" value="(member={1})"/>
<module-option name="roleAttributeID" value="memberOf"/>
<module-option name="roleAttributeIsDN" value="true"/>
<module-option name="roleNameAttributeID" value="ou"/>
<module-option name="allowEmptyPasswords" value="false"/>
<module-option name="throwValidateError" value="true"/>
<module-option name="searchScope" value="SUBTREE_SCOPE"/>
</login-module>
<login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="optional">
<module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
<module-option name="java.naming.provider.url" value="second_ldap_addres:port"/>
<module-option name="bindDN" value="second_ad_user_used_to_authenticate_in_domain"/>
<module-option name="bindCredential" value="second_password_for_user"/>
<module-option name="baseCtxDN" value="dc=zzz,dc=www"/>
<module-option name="baseFilter" value="(sAMAccountName={0})"/>
<module-option name="rolesCtxDN" value="dc=zzz,dc=www"/>
<module-option name="roleFilter" value="(member={1})"/>
<module-option name="roleAttributeID" value="memberOf"/>
<module-option name="roleAttributeIsDN" value="true"/>
<module-option name="roleNameAttributeID" value="ou"/>
<module-option name="allowEmptyPasswords" value="false"/>
<module-option name="throwValidateError" value="true"/>
<module-option name="searchScope" value="SUBTREE_SCOPE"/>
</login-module>
</authentication>
</security-domain>