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>