我正在尝试为我的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>
答案 0 :(得分:0)
密码堆叠 可选的 设置为useFirstPass以指示此登录模块应查找存储在LoginContext中的信息以用作标识。使用此选项堆叠其他登录模块时,可以使用此选项。默认为false
我的瘦kin ldap模块没有把这个可选值