2015-02-23 209 views
3

我在的jboss-web.xml中定義的安全域,如下JBoss的Wildfly - Web應用程序的身份驗證對LDAP

<jboss-web> 
    <security-domain>java:/jaas/my_ldap_security_domain</security-domain> 
    <disable-audit>true</disable-audit> 
</jboss-web> 

我也有我的standalone.xml內部定義

<subsystem xmlns="urn:jboss:domain:security:1.2"> 
    <security-domains> 
     <security-domain name="my_ldap_security_domain" cache-type="default"> 
      <authentication> 
       <login-module code="LdapExtended" flag="sufficient"> 
        <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/> 
        <module-option name="java.naming.provider.url" value="ldaps://xxx.xxx.xxx.xxx:yyyy"/> 
        <module-option name="java.naming.security.authentication" value="simple"/> 
        <module-option name="bindDN" value="[email protected]"/> 
        <module-option name="bindCredential" value="mypass"/> 
        <module-option name="baseCtxDN" value="DC=my,DC=domain"/> 
        <module-option name="baseFilter" value="(uid={0})"/> 
        <module-option name="rolesCtxDN" value="DC=my,DC=domain"/> 
        <module-option name="roleFilter" value="(uniquemember={1})"/> 
        <module-option name="roleAttributeID" value="cn"/> 
        <module-option name="searchScope" value="SUBTREE_SCOPE"/> 
        <module-option name="roleRecursion" value="0"/> 
        <module-option name="allowEmptyPasswords" value="true"/> 
       </login-module> 
      </authentication> 
     </security-domain> 
    </security-domains> 
</subsystem> 

我只有領域出現在我的standalone.xml

<security-realms> 
    <security-realm name="ManagementRealm"> 
     <authentication> 
      <local default-user="$local" skip-group-loading="true"/> 
      <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/> 
     </authentication> 
     <authorization map-groups-to-roles="false"> 
      <properties path="mgmt-groups.properties" relative-to="jboss.server.config.dir"/> 
     </authorization> 
    </security-realm> 
    <security-realm name="ApplicationRealm"> 
     <authentication> 
      <local default-user="$local" allowed-users="*" skip-group-loading="true"/> 
      <properties path="application-users.properties" relative-to="jboss.server.config.dir"/> 
     </authentication> 
     <authorization> 
      <properties path="application-roles.properties" relative-to="jboss.server.config.dir"/> 
     </authorization> 
    </security-realm> 
</security-realms> 

我之前沒有提到它,因爲我推測這個securit y領域旨在驗證應用程序服務器控制檯訪問權限。對不起。

我的疑問是如何創建一個jsf2登錄頁面來驗證上面定義的內容。我閱讀了大量的文章,但仍然在同一地方,因爲大多數文章使用虛擬身份驗證作爲示例(與靜態字符串比較,而不是顯示如何諮詢LDAP服務器)。

任何人都可以幫助我嗎?

回答

2

我推測,這種安全領域註定要驗證應用程序服務器控制檯訪問

你是部分正確的存在。 name="ManagementRealm"確實指定了用於訪問管理功能的領域配置。 name="ApplicationRealm"將是用於保護Web應用程序的屬性

您當前的realm配置缺少LDAP身份驗證所需的一些內容。我推測您已經熟悉web.xml中的登錄表單配置。你的領域配置看起來應該像下面,從Wildfly 8 Realm Configuration Manual的摘錄:

<management> 
  <security-realms> 
    <security-realm name="ApplicationRealm"> 
      <authentication> 
        <ldap connection="EC2" base-dn="CN=Users,DC=darranl,DC=jboss,DC=org"> 
          <username-filter attribute="sAMAccountName" /> 
        </ldap> 
      </authentication> 
    </security-realm> 
  
  </security-realms> 
</management> 

<ldap>標籤指定您的查找是針對LDAP服務器。除此之外,您只需要遵循JavaEE應用程序的標準auth方法。

從這個外賣應該是Web應用程序安全性的JavaEE內通常採用的

  1. 同樣的方法設置一個領域(應用程序服務器特定的)
  2. 在web.xml中設置安全約束(跨所有應用程序的JavaEE均勻)
  3. 實現一個登錄方法(配置或編程)

相關

+0

對不起,我只能夠創建信息後回答差不多一個月。我真的很喜歡你所說的話,但我仍然對你之前提到的3步驟方法感到不安。 我認爲這很好,儘管我對你的答案中沒有提到的ApplicationRealm,認證,授權和出站連接仍有很多疑問。我不知道以我的場景作爲例子會是什麼。 我在這裏閱讀的安全約束 - 關於基於表單的http://docs.oracle.com/javaee/6/tutorial/doc/gkbaa.html。 但配置的登錄方法呢? – 2015-03-25 21:23:08

+0

我沒有在我的回答中談論過這些,因爲你的問題不是關於任何那個。即使是現在,你實際上還沒有問過任何一個問題。 「懷疑」是什麼意思?如果你問一個具體的問題,我將能夠給出具體的答案。我的回答發佈時假定您對javaee webapp中的身份驗證和授權有基本的瞭解。你應該首先得到那個排序@DanielFerreiraCastro – kolossus 2015-03-27 18:05:46

+0

看,我沒有抱怨。你剛寫的東西幫了我很多。但是,關於我之前寫過的懷疑,你認爲最好的辦法是什麼?你認爲另一篇文章能讓我的觀點更清晰嗎?你能回答嗎? – 2015-03-31 11:48:21