0

我在 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>
4

1 回答 1

0

我的问题出在领域定义中的 server.xml 文件中。事实证明,所有以“*”开头的 AD 组在 AD 中的定义与其他组不同。特别是,它们具有不同的 distinctName,指定不同的 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"
于 2012-05-29T19:43:05.693 回答