2014-11-05 40 views
2

Tomcat容器使用LDAP验证用户Tomcat的JNDIRealm验证和忽略所有角色

我试图取代LDAP身份验证Tomcat的inMemory用户数据库。在conf/server.xml中进行更改

当用户登录弹出时,我想比较用户凭据和ldap。

<Realm className="org.apache.catalina.realm.JNDIRealm" 
connectionName="abcusername" 
connectionPassword="mypassword" 
connectionURL="ldap://ada.cab.ast.com:389" 
debug="10" userBase="DC=cab,DC=ast,DC=com" 
userSearch="(cn={0})" 
userSubtree="true"/> 

我的web.xml中,如果用户通过认证完全没有作用,限制

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>HTML Manager interface (for humans)</web-resource-name> 
     <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>*</role-name> 
    </auth-constraint> 
</security-constraint> 

<login-config> 
    <auth-method>BASIC</auth-method> 
    <realm-name>Tomcat Manager Application</realm-name> 
</login-config> 

当我提供正确的用户名和密码,我在下面的日志用户进行身份验证,但看到失败的授权我猜想失败了。 任何帮助表示赞赏。

AuthenticatorBase.register Authenticated 'fkhan002c' with type 'BASIC' 
AuthenticatorBase.invoke Calling accessControl() 
hasResourcePermission Checking roles GenericPrincipal[fkhan002c()] 
AuthenticatorBase.invoke Failed accessControl() test 

回答

1

发现一个问题

网络资源采集是对Java资源为我试图autherize静态内容,你可以看到下面我还需要对静态内容。

<security-constraint> 
     <web-resource-collection> 
      <web-resource-name>Secure contents</web-resource-name> 
      <url-pattern>/index.html</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
      <role-name>*</role-name> 
     </auth-constraint> 
    </security-constraint> 

    <login-config> 
     <auth-method>BASIC</auth-method> 
     <realm-name>Secure content</realm-name> 
    </login-config> 


<security-role> 
     <description> 
      This logical role includes all administrative users 
     </description> 
     <role-name>*</role-name> 
    </security-role>