有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    如果足够满足您的需要,请使用LdapLoginModule而不是LdapExtLoginModule。 该登录模块支持密码堆叠

    然而,从你的要求来看,我不认为密码堆叠是你想要的

    If a previous module configured for password stacking has authenticated the user, all the other stacking modules will consider the user authenticated and only attempt to provide a set of roles for the authorization step.

    用户可能是员工还是会员?如果是,请使用“足够”作为LoginModule的“flag”属性

    sufficient : The login module is not required to succeed. If it does succeed, control immediately returns to the application. If it fails, authentication continues down the login stack.