2010-10-21 59 views
1

我們正在使用我們的Web應用程序使用安全領域進行測試。在測試中,我們將對抗Microsoft Active Directory。生產將違背習慣。我在Tomcat中工作很好,但似乎無法在WebSphere中正常工作。我在WebSphere中創建了一個可以連接到AD的安全域(foo-ldap)。現在我已經將foo-ldap應用到了server1範圍。在打入/ servlet/LoginServlet時,我沒有被重定向到authenticate.faces。WebSphere 7.0中的應用程序的安全領域

Web.xml和Tomcat配置如下。

Tomcat的配置:

<Realm className="org.apache.catalina.realm.JNDIRealm" 
     connectionURL="ldap://ActiveDirectorySrv:389" 
     connectionName="CN=ldap user,CN=Users,DC=foo,DC=com" 
     connectionPassword="Password1" 
     referrals="follow" 
     userBase="CN=Users,DC=foo,DC=com" 
     userSearch="(&amp;(objectCategory=user)(sAMAccountName={0}))" 
     userSubtree="true" 
     userRoleName="memberOf" 
     roleBase="CN=Users,DC=foo,DC=com" 
     roleSubtree="true" 
     roleName="cn" 
     roleSearch="(member={0})"/> 

的web.xml

<security-constraint> 
     <web-resource-collection> 
      <web-resource-name>Protected Area</web-resource-name> 
      <url-pattern>/servlet/LoginServlet</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
      <role-name>Developers</role-name> 
     </auth-constraint> 
    </security-constraint> 

    <login-config> 
     <auth-method>FORM</auth-method> 
     <form-login-config> 
      <form-login-page>/authenticate.faces</form-login-page> 
      <form-error-page>/loginFailed.faces</form-error-page> 
     </form-login-config> 
    </login-config> 

    <security-role> 
     <role-name>Developers</role-name> 
    </security-role> 

回答

1

我運行到的問題是雙重的。

  1. 安全上下文的配置存在於web.xml中。它必須在安裝應用程序時出現已安裝的戰爭。我們將配置註釋掉了,所以開發人員在調試時不需要提供憑據,並且在部署戰爭後我試圖取消註釋。

  2. 您必須在安裝時將角色映射到您的安全領域。我們有一個腳本部署應用程序並且無需修改,這些角色未被映射,並且在安裝後映射角色的功能不可用。即使從ibm控制檯站點安裝,您也必須在安裝時選擇詳細的安裝和映射組,否則映射鏈接不可用。

一旦我安裝了安全並重定向到登錄頁面工作,我們有另一個問題。我不確定這是否與我們的JSF代碼有關,但是我無法重定向到在WebSphere中使用JSF的頁面(與Tomcat一起工作良好)。我們的解決方案是隻使用一個jsp頁面作爲認證頁面。

希望這可以幫助別人。