【问题标题】:Tomcat Web xml URL-Pattern does not accept urls with parameters?Tomcat Web xml URL-Pattern 不接受带参数的 url?
【发布时间】:2013-02-15 03:49:04
【问题描述】:

我正在尝试保护 tomcat6 上的几个页面以供出售的应用程序使用。除了两个(在下面的代码中标有双星号)之外,我成功地使用了大多数 URL 的 URL 模式来保护。这两个 URL 的不同之处在于它们采用确定视图的参数。我想限制这两个视图,因此指定了要阻止/保护/验证的确切 URL,如下所示。但是 Tomcat 不保护它们。

 <security-constraint>
            <web-resource-collection>
                    <web-resource-name>TopBraid</web-resource-name>
                    <description>Restrict few pages that need security.</description>
                    <url-pattern>/tbl/admin/*</url-pattern>
                    <url-pattern>/tbl/sparql/*</url-pattern>
                    **<url-pattern>/tbl/swp?_viewClass=appConfig:ServerConfigEditor</url-pattern>**
                    **<url-pattern>/tbl/swp?_viewClass=adminConfig:AdminEditPage</url-pattern>**
                    <url-pattern>/tbl/sp_reset</url-pattern>
                    <url-pattern>/tbl/sp_redeploy</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                    <role-name>SERVER_ADMINS</role-name>
            </auth-constraint>
    </security-constraint>
    <security-role>
            <role-name>SERVER_ADMINS</role-name>
    </security-role>
    <login-config>
            <auth-method>FORM</auth-method>
            <realm-name>TopBraid</realm-name>
            <form-login-config>
                    <form-login-page>/logon.html</form-login-page>
                    <form-error-page>/logonError.html</form-error-page>
            </form-login-config>
    </login-config>
    <security-constraint>
            <web-resource-collection>
                <web-resource-name>Public</web-resource-name>
                <description>Matches any page.</description>
                <url-pattern>/*</url-pattern>
            </web-resource-collection>
    </security-constraint>

我知道 JSR 规范可能将它们称为无效模式。想知道是否可以以某种方式指定模式以使其可以接受。还是有其他方法可以限制对我上面列出的两个 URL 的访问?

【问题讨论】:

  • 你为什么不用 /tbl/swp 来代替它们呢?
  • 还有其他不需要身份验证的 /tbl/swp 模式的 url,例如 /tbl/swp?_viewName=home。

标签: java security tomcat web.xml url-pattern


【解决方案1】:

无法从 Web 或应用程序服务器限制对特定 URL 参数及其值的访问,就像您在上面 /tbl/swp?_viewClass=tblconfig:ConfigEditor /tbl/swp?_viewClass=admins:AdminsEditorPage 上尝试做的那样。这种类型的过滤/URL 限制必须由应用程序本身执行,通过为这些视图创建一个唯一的会话。

当应用程序服务器解析传入的 URL 时,一旦它们到达第一个“?”,它们的工作就完成了。这是要传递给应用程序的第一个参数。从这里开始,应用程序必须处理任何类型的过滤/访问控制。

【讨论】:

  • 感谢您的回答。您是否认为编写一个可以拦截所有请求然后进行身份验证的自定义 Tomcat Valve 可能会有所帮助。我有这个想法,但不知道如何进行。
  • 不,这对这两个例子没有帮助。这必须由 Java 代码处理,而不是由应用程序服务器处理。没有 Tomcat Valve 可以做到这一点。
猜你喜欢
  • 2012-01-16
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
相关资源
最近更新 更多