2015-10-29 63 views
0

我有兩組用戶 - 員工和成員,員工在LDAP服務器中,成員在屬性文件中。我需要在一個安全域中配置它們,這意味着我需要從不同的登錄模塊(來自LdapExtLoginModule的員工)以及UsersRoles登錄模塊的成員獲得身份驗證。事情是這樣的:如何在JBOSS EAP 6.3的一個安全域中配置多個登錄模塊?

<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="[email protected]"/> 
      <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包/類)。

回答

0

如果足夠滿足您的需求,請使用LdapLoginModule而不是LdapExtLoginModule。 該LoginModule支持密碼堆疊。

但是,你的要求我不認爲密碼堆疊做判斷的是你正在尋找...

什麼如果配置爲密碼堆疊先前模塊已驗證用戶,其他所有的堆疊模塊將考慮用戶身份驗證,並且僅嘗試爲授權步驟提供一組角色。

看起來像一個用戶將成爲員工或會員?如果是這樣,請使用「足夠」作爲LoginModule「標誌」屬性

足夠:登錄模塊不需要成功。如果成功,控制立即返回到應用程序。如果失敗,認證繼續沿着登錄棧。

+0

我需要根據需要使用LdapExtLoginModule。用戶有時可以是員工和會員(將來的要求)。 –

+0

(可能也是)簡單的解決方案,以您的未來要求:如果一個員工是一個成員也存儲在與員工的LDAP成員角色...所以屬性文件只包含「純」成員......如果這是一個沒有 - 去那裏總有可能編寫你自己的LoginModule實現 – tom

+0

我不認爲我可以做到這一點。但是,您能否提出一個關於如何爲我的需求構建自定義登錄模塊的想法? –