2

运行 Tomcat 7,我试图在 Tomcat 服务器上配置 /conf/web.xml 以保护一些具有基本身份验证的 URL 并提供一些其他 URL 以供公共访问。

tomcat-users.xml 包含以下角色和用户:

<role rolename="test-ui"/>
<user username="paul" password="password" roles="test-ui"/>

我已将以下部分添加到 Tomcats /conf/web.xml

<security-constraint>
   <web-resource-collection>
     <web-resource-name>Public access</web-resource-name>
     <url-pattern>/docs/*</url-pattern>
   </web-resource-collection>
</security-constraint>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Protected access</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>test-ui</role-name>
    </auth-constraint>
</security-constraint>

<security-role>
    <description>Protected access</description>
    <role-name>test-ui</role-name>
</security-role>

<login-config>
    <auth-method>BASIC</auth-method>
</login-config>

所以有两个“安全约束”元素,公共元素不包含“身份验证约束”,这实际上应该意味着,没有必要的身份验证。

当我打开 URL http://localhost:8080

Tomcat 要求进行身份验证。这很好,但是当我打开 URL http://localhost:8080/docs/

Tomcat 还要求进行身份验证,据我了解,这被配置为“非安全”URL - 因此可以公开访问,但它的行为并非如此。

我在配置中做错了什么,或者这种情况不应该像这样工作吗?

谢谢。保罗

4

2 回答 2

0

您需要 <security-constraint> 中的 <auth-constraint> 节点,即使它是空的,例如 <auth-constraint/>

于 2012-03-02T01:58:26.853 回答
0

如果安全约束不存在,容器必须允许未经身份验证的访问这些 URL。安全约束是可选的。

于 2013-10-03T14:54:41.010 回答