2015-09-23 39 views
1

我正在嘗試爲我的JBoss EAP 6應用程序配置一個安全域,其中主要的身份驗證方式是智能卡,但是在沒有卡時會接受LDAP身份驗證。 我已經能夠做任何一個,但不能兩個。密碼堆棧選項應該允許運行每個模塊,以便例如,即使在證書模塊已經返回用戶身份時,LDAP模塊也可以檢索角色。 但是,應用程序的web.xml需要使用auth方法指定login-config。在證書的情況下,這是CLIENT-CERT,而LDAP是BASIC。 有沒有人找到一種方法可以讓這兩個模塊成功鏈接在一起? 我獨立的安全域看起來是這樣的:帶有證書和LDAP登錄模塊的JBoss密碼堆棧

<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

密碼堆疊 可選 設置爲useFirstPass表明,這個登錄模塊應該存儲在LoginContext將作爲標識使用的信息。使用此選項堆疊其他登錄模塊時可以使用此選項。默認爲false

我瘦家族ldap模塊不把這個可選值