Tomcat JNDIRealm验证并忽略所有角色

时间:2014-11-05 19:57:14

标签: tomcat authentication ldap authorization jndi

Tomcat容器使用LDAP对用户进行身份验证

我正在尝试用LDAP身份验证替换Tomcat的inMemory用户数据库。在conf / server.xml中进行更改

当用户登录popus时,我想将用户凭据与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 个答案:

答案 0 :(得分:1)

发现问题

Web资源集合是针对java资源的,因为我试图将静态内容作为一个静态内容,因为您可以看到以下我也需要静态内容。

    <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>