Spring Security 自定义过滤器被基本 http 安全覆盖
Posted
技术标签:
【中文标题】Spring Security 自定义过滤器被基本 http 安全覆盖【英文标题】:Spring Security Custom filter overridden by basic http security 【发布时间】:2017-01-17 07:31:32 【问题描述】:applicationcontext.xml 部分
<bean id="springSecurityFilterChain" class="org.springframework.security.web.FilterChainProxy">
<security:filter-chain-map request-matcher="ant">
<security:filter-chain pattern="/health"
filters="none" />
<security:filter-chain pattern="/swagger-ui.html"
filters="none" />
<security:filter-chain pattern="/images/**"
filters="none" />
<security:filter-chain pattern="/webjars/**"
filters="none" />
<security:filter-chain pattern="/v2/apidocs"
filters="none" />
<security:filter-chain pattern="/*.ico"
filters="none" />
<security:filter-chain pattern="/**"
filters="customAuthorizationFilter" />
</security:filter-chain-map>
文件:security-context.xml
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-4.0.xsd">
<http>
<intercept-url pattern="/swagger-ui.html" access="hasRole('ROLE_ADMIN')" />
<http-basic/>
<csrf disabled="true"/>
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="abc" password="Basicauth" authorities="ROLE_ADMIN" />
</user-service>
</authentication-provider>
</authentication-manager>
</beans:beans>
有自定义过滤器通过验证请求和检查错误来保护方法。 包含 security-context.xml 文件后,用于具有用户名和密码的特定端点(swagger-ui.html)的基于资源的安全性。
此安全更改后,自定义过滤器身份验证不起作用,可能会被新的安全实施覆盖。如何解决这个问题?
【问题讨论】:
【参考方案1】:在给出答案之前没有足够的时间来测试它,但您可以尝试创建您的自定义过滤器,如下所示:
<custom-filter ref="customAuthorizationFilter" before="BASIC_AUTH_FILTER"/>
我认为这与过滤器的优先级有关。
【讨论】:
以上是关于Spring Security 自定义过滤器被基本 http 安全覆盖的主要内容,如果未能解决你的问题,请参考以下文章
使用 Java Config 的 Spring Security 自定义身份验证过滤器
Spring-security/Grails 应用程序 - 未调用自定义 WebSecurity 配置