【问题标题】:Spring Security Filter Mapping - Disable on certain Url PatternSpring Security 过滤器映射 - 在某些 Url 模式上禁用
【发布时间】:2023-03-22 04:54:01
【问题描述】:

我有以下 servlet 定义:

    <servlet>
        <servlet-name>licenseGenService</servlet-name>
        <servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>licenseGenService</servlet-name>
        <url-pattern>/remoting/licensing</url-pattern>
    </servlet-mapping>

    <!-- Restful API Servlet-->
    <servlet>
        <servlet-name>licensingRestService</servlet-name>
        <servlet-class>
            com.sun.jersey.spi.spring.container.servlet.SpringServlet
        </servlet-class>
        <init-param>
            <param-name>
                    com.sun.jersey.config.property.packages
            </param-name>
            <param-value>
                com.mydomain.licensing.rest
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>licensingRestService</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

然后是以下安全过滤器:

    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>
            org.springframework.web.filter.DelegatingFilterProxy
        </filter-class>
    </filter>


    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

因此,根据我的阅读,/* 的 url 模式会被具有显式 url 的模式覆盖。这适用于我的 servlet。事情是,我不想要licenseGenService servlet 所需的基本身份验证。如何将安全过滤器定义为仅适用于 REST servlet,而不适用于 licenseGenService

【问题讨论】:

  • ava to Java remoting servlet 是什么意思。
  • 抱歉,licenseGenService servlet。我将进行编辑以使其更清晰。这是一个例子,我知道我要输入什么,但我忘记了观众
  • 您能否将licensingRestService 映射到/api,然后将安全过滤器应用到/api?否则,您将需要以编程方式过滤掉过滤器中的 /remoting/licensing,然后继续使用安全过滤器(即过滤器链)。例如,让您的过滤器采用忽略模式参数,然后在转发到链中的下一个过滤器之前检查您的过滤器是否在忽略模式中。

标签: java spring servlets spring-security servlet-filters


【解决方案1】:

可以在应用上下文xml中配置需要授权的url。

<http use-expressions="true">
  <intercept-url pattern="/remoting/licensing/**"  filters="none" />
</http>

【讨论】:

  • 这是已弃用的版本。但谢谢你带领我朝着正确的方向前进。
【解决方案2】:

我最终在我的安全应用程序上下文中放置了以下内容:

<http pattern="/remoting/**" security="none"/>

这适用于 Spring 3.1

【讨论】:

    猜你喜欢
    • 2020-08-09
    • 1970-01-01
    • 2013-06-16
    • 2022-10-19
    • 2020-01-14
    • 2019-03-06
    • 2016-02-16
    • 2016-04-26
    • 1970-01-01
    相关资源
    最近更新 更多