【发布时间】:2013-08-17 01:09:25
【问题描述】:
我想为部署在 Tomcat7 服务器上的所有 webapp 应用安全约束。为此,我设置了一个领域和阀门。我的理解是,context.xml 的内容包含在部署到服务器的所有应用程序中——这部分似乎可以工作,因为我可以添加各种配置,并且我看到了它包含在各种部署的应用程序上下文中的效果。它非常适合在 Web 应用程序中强制执行一致性。
似乎不起作用的是尝试在 web.xml 之外定义如下安全约束:
<security-constraint>
<web-resource-collection>
<web-resource-name>myServletWAR</web-resource-name>
<url-pattern>*.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>my_role</role-name>
</auth-constraint>
</security-constraint>
我在 Context 标记之间的 context.xml 中执行此操作。没有来自 Tomcat 的投诉,但没有应用安全约束,例如我可以在没有密码的情况下点击应用程序。使用 context.xml 中的上述约束,我看到:
Aug 14, 2013 3:03:32 PM org.apache.catalina.authenticator.AuthenticatorBase invoke
FINE: Not subject to any constraint
...在日志中,无需身份验证即可访问“受保护”资源。
当然,将相同的约束移动到 webapps 的 web.xml 会产生预期的约束行为,但我需要确保约束在给定服务器上的所有已部署应用中一致地应用。
安全约束需要在网络应用程序内部吗?如果确实如此,如果不在 context.xml 中,我如何在多个(尚未部署的)Web 应用程序中定义安全约束?
This 正是我想要设置的,但我想在 web.xml 之外(上方)强制执行约束。再一次,这样它将在整个服务器上保持一致。
我确实看到了另一个 similar question,但我正在尝试在 Tomcat 配置中找到一种方法来执行此操作,而无需使用代码库中的 Servlet API(已编写)。
谢谢!
【问题讨论】:
-
当我提交时它击中了我 - $CATALINA_HOME/conf/web.xml 可能是我想要的。如果是这种情况,将进行测试并关闭并记录。
标签: security tomcat tomcat7 security-constraint