小编典典

Spring安全性和带有Spring Boot的自定义AuthenticationFilter

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);
    }
}

现在,我ssoAuthenticationFilter是的一部分FilterChainProxy,位于正确的位置。光滑。

但由于ssoAuthenticationFilterFilter它得到通过引导拾起并作为过滤器。所以我的过滤器链看起来真的像:

  • ssoAuthenticationFilter(之所以包含在内是因为Filter
  • filterChainProxy(Spring自动配置)
    • SecurityContextPersistenceFilter
    • ssoAuthenticationFilter(包含在中http.addFilterAfter(...)
  • 其他一些过滤器

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

任何提示,不胜感激。


阅读 573

收藏
2020-05-30

共1个答案

小编典典

2个选择:

  1. 添加一个FilterRegistrationBean @Bean带有滤豆作为目标过滤器的,并将其标记为enabled = false

  2. 不要@Bean为您的过滤器创建定义(通常就是我所做的,但是要使用YMMV,因为您可能依赖自动装配或某些使它起作用的方法)

2020-05-30