java如何在JBOSS EAP 6.3中在一个安全域中配置多个登录模块?
我有两组用户-雇员和成员,雇员在LDAP服务器中,成员在属性文件中。我需要在一个安全域中配置这两个模块,这意味着我需要从不同的登录模块获得身份验证—来自LdapExtLoginModule的员工,以及来自UsersRoles登录模块的成员。大概是这样的:
<security-domain name="EmpMem" cache-type="default">
<authentication>
<login-module code="UsersRoles" flag="required">
<module-option name="password-stacking" value="useFirstPass"/>
<module-option name="usersProperties" value="app-users.properties"/>
<module-option name="rolesProperties" value="app-roles.properties"/>
</login-module>
<login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="required">
<module-option name="password-stacking" value="useFirstPass"/>
<module-option name="java.naming.provider.url" value="ldap://ha-adds-global.xxx.com:3268"/>
<module-option name="bindDN" value="CN=prodjbsvc,OU=ServiceAccounts,OU=NOPOL,dc=eagle,dc=xxx,dc=com"/>
<module-option name="bindCredential" value="XQtU@1lc"/>
<module-option name="baseCtxDN" value="dc=eagle,dc=xxx,dc=com"/>
<module-option name="baseFilter" value="(sAMAccountName={0})"/>
<module-option name="rolesCtxDN" value="ou=COSAs,dc=eagle,dc=xxx,dc=com"/>
<module-option name="roleFilter" value="(sAMAccountName={0})"/>
<module-option name="roleAttributeID" value="memberOf"/>
<module-option name="roleAttributeIsDN" value="true"/>
<module-option name="roleNameAttributeID" value="cn"/>
<module-option name="roleRecursion" value="-1"/>
<module-option name="searchScope" value="SUBTREE_SCOPE"/>
<module-option name="allowEmptyPasswords" value="false"/>
<module-option name="java.naming.referral" value="follow"/>
</login-module>
</authentication>
</security-domain>
我知道有一个名为密码堆叠的登录模块,它可以将多个登录模块链接在一起,但看起来LdapExtLoginModule不支持这个功能?请提出一个实现这一目标的方法
我的要求: 当用户是雇员时,他从LDAP服务器获得身份验证,并且应该只能访问雇员资源(java包/类);当用户是成员时,他从属性文件获得身份验证,并且应该只能访问成员资源(java包/类)
# 1 楼答案
如果足够满足您的需要,请使用LdapLoginModule而不是LdapExtLoginModule。 该登录模块支持密码堆叠
然而,从你的要求来看,我不认为密码堆叠是你想要的
用户可能是员工还是会员?如果是,请使用“足够”作为LoginModule的“flag”属性