包含星号的声明性安全角色名称无法工作

时间:2012-05-26 14:23:11

标签: tomcat servlets web.xml declarative-security

我的web.xml中的声明性安全条目存在问题。

以下条目不允许我访问该网页,即使我是该群组*ADL - Education Group的成员。我最终被定向到login-noauth页面。

我知道这应该有效 - 如果我将其更改为其他组(例如AT - Tech Support),则效果很好。我怀疑组名中的前导“*”并尝试在web.xml中使用CDATA,但这不起作用。我无法控制Active Directory条目,因此无法更改组的名称。带有破折号和空格的其他组名称可以正常工作。

我已经确认我是该群组*ADL - Education Group的成员。

这是在一个简单的tomcat 6.0服务器上。

有谁知道问题是什么以及如何解决?

<error-page>
    <error-code>403</error-code>
    <location>/pages/login/login-noauth.jsf</location>
</error-page>
<login-config>
    <auth-method>FORM</auth-method>
    <form-login-config>
        <form-login-page>/pages/login/login.jsf</form-login-page>
        <form-error-page>/pages/login/login-fail.jsf</form-error-page>
    </form-login-config>
</login-config>

<security-constraint>
    <display-name>Batch Security</display-name>
    <web-resource-collection>
        <web-resource-name>Batch Security</web-resource-name>
        <url-pattern>/pages/batch/batch-status.jsf</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>*ADL - Education Group</role-name>
    </auth-constraint>
</security-constraint>
<security-role>
    <description>Everyone</description>
    <role-name>*ADL - Education Group</role-name>
</security-role>

1 个答案:

答案 0 :(得分:0)

我的问题出现在Realm定义的server.xml文件中。事实证明,所有以“*”开头的AD组在AD中的定义与其他组不同。特别是,它们具有不同的distinguishedName,指定不同的roleBase。因此,一旦我在server.xml的Realm元素中更改了我的roleBase属性,它就会很好用,不需要反斜杠或字符翻译。

我对roleBase的编辑只是指定两种类型的组共有的专有名称的唯一部分。

在一种情况下,专有名称是:

CN=*ADL - Education Group,OU=ADLS,OU=IdM,DC=ROOT,DC=com

而在另一种情况下,专有名称是:

CN=AT - Tech Support,OU=Distribution Groups,OU=AG1-Place-Company,OU=Americas,OU=Exchange,DC=ROOT,DC=com

因此,作为server.xml文件中的roleBase的作用是:

roleBase="DC=ROOT,DC=com"