我的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>
答案 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"