2010-10-21 45 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页面作为认证页面。

希望这可以帮助别人。