首页 文章

JBoss密码堆栈与证书和LDAP登录模块

提问于
浏览
1

我正在尝试为我的JBoss EAP 6应用程序配置一个安全域,其中主要的身份验证方法是智能卡,但如果没有该卡,则会接受LDAP身份验证 . 我能够做到任何一个,但不能两个都做 . 密码堆栈选项应允许运行每个模块,以允许LDAP模块,例如,即使证书模块已返回用户身份,也可以检索角色 . 但是,应用程序的web.xml需要使用auth-method指定login-config . 对于Certificate,这是CLIENT-CERT,而LDAP是BASIC . 有没有人找到一种方法来允许这两个模块成功链接在一起?我的独立安全域如下所示:

<security-domain name="MySecurityDomain" cache-type="default">
<authentication>
    <login-module code="Certificate" flag="required">
        <module-option name="password-stacking" value="useFirstPass"/>
        <module-option name="securityDomain" value="MySecurityDomain"/>
        <module-option name="verifier" value="org.jboss.security.auth.certs.AnyCertVerifier"/>
    </login-module>
    <login-module code="LdapExtended" flag="required">
        <module-option name="password-stacking" value="useFirstPass"/>
        <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
        <module-option name="java.naming.security.authentication" value="simple"/>
        <module-option name="java.naming.provider.url" value="ldap://my.fully.qualified.domain:389"/>
        <module-option name="bindDN" value="FULLY\username"/>
        <module-option name="bindCredential" value="mypassword"/>
        <module-option name="baseCtxDN" value="CN=Users,DC=fully,DC=qualified,DC=domain"/>
        <module-option name="baseFilter" value="(sAMAccountName={0})"/>
        <module-option name="rolesCtxDN" value="CN=Users,DC=fully,DC=qualified,DC=domain"/>
        <module-option name="roleFilter" value="(member={1})"/>
        <module-option name="roleAttributeIsDN" value="true"/>
        <module-option name="roleAttributeID" value="memberOf"/>
        <module-option name="roleNameAttributeID" value="name"/>
        <module-option name="allowEmptyPasswords" value="false"/>
    </login-module>
    <login-module code="org.picketlink.identity.federation.bindings.jboss.auth.RegExUserNameLoginModule" flag="optional">
        <module-option name="regex" value="CN=(.*?),"/>
    </login-module>
    <login-module code="Database" flag="required">
        <module-option name="password-stacking" value="useFirstPass"/>
        <module-option name="dsJndiName" value="java:jboss/datasources/myDS"/>
        <module-option name="rolesQuery" value="select role, 'Roles' from Principal where name=?"/>
    </login-module>
</authentication>
<jsse truststore-password="mykeypass" truststore-url="${jboss.server.config.dir}/truststore.jks" client-auth="true"/>
<audit>
    <provider-module code="LogAuditProvider"/>
</audit>

1 回答

  • 0

    password-stacking可选设置为useFirstPass以指示此登录模块应查找存储在LoginContext中的信息以用作标识 . 使用此选项堆叠其他登录模块时,可以使用此选项 . 默认值为false

    我瘦的kin ldap模块不要把这个可选值

相关问题