繁体   English   中英

Spring安全和自定义AuthenticationFilter与Spring启动

[英]Spring security and custom AuthenticationFilter with Spring boot

我有自定义身份验证筛选器,它创建PreAuthenticatedAuthenticationToken并将其存储在安全上下文中。 一切正常。 这是配置:

@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private SsoAuthenticationProvider authenticationProvider;

    @Autowired
    private SsoAuthenticationFilter ssoAuthenticationFilter;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.addFilterAfter(ssoAuthenticationFilter, SecurityContextPersistenceFilter.class);
    }
}

现在我的ssoAuthenticationFilterFilterChainProxy一部分,位于正确的位置。 平滑。

但是当ssoAuthenticationFilterFilter它会被Boot选中并作为过滤器包含在内。 所以我的滤镜链看起来像:

  • ssoAuthenticationFilter(因为是Filter包含在内)
  • filterChainProxy(spring autoconfiguration)
    • ...
    • SecurityContextPersistenceFilter
    • ssoAuthenticationFilter(由http.addFilterAfter(...)包含)
    • ...
  • 一些其他过滤器

显然我想在这里摆脱ssoAuthenticationFilter的自动注册(列出的第一个)。

任何提示非常感谢。

2种选择:

  1. 添加FilterRegistrationBean @Bean并将过滤器bean作为其目标过滤器,并将其标记为enabled = false

  2. 不要为你的过滤器创建一个@Bean定义(通常这就是我所做的,但YMMV,因为你可能依赖于自动装配或某些东西让它工作)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM