【发布时间】:2018-03-29 18:57:14
【问题描述】:
我在 IDP 模式和 spring-boot 中使用 spring-security-oauth2。在从请求中提取 oauth 令牌之前,我需要做一些工作。如何在OAuth2AuthenticationProcessingFilter前添加过滤器?
我试过了:
@Configuration
@EnableResourceServer
public class OAuth2ResourceServerConfigurerAdapter extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated().and()
.addFilterBefore(new MyFilter(), OAuth2AuthenticationProcessingFilter.class);
}
}
但我得到以下异常:
java.lang.IllegalArgumentException: 未注册过滤器类 org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter 后无法注册
我猜这可能是因为@EnableResourceServer 在configure(HttpSecurity http) 之后执行。
【问题讨论】:
-
您可以添加任何
interceptor来代替filter吗? -
我在多个 WebSecurityConfigs 中使用这些过滤器。只要拦截器允许这样做,我就应该能够使用它们。我还需要控制过滤器运行的顺序(TenantFilter 在 JwtFilter 之前运行,而 JwtFilter 又在 WebAsyncManagerIntegrationFilter 等之前运行)。我还需要能够有选择地为不同的 WebSecurityConfigs 使用不同的拦截器。拦截器可以做到这一点吗?你能举个例子吗?
-
这可能对您有所帮助。 stackoverflow.com/q/11586757/4423636
-
@jax 你解决了吗?我有完全相同的问题,它只会以反模式和丑陋的东西结束:(一旦
@EnableResourceServer创建了过滤器链,我希望能够添加一个过滤器。 -
@jax 你解决了这个问题吗?
标签: spring-security spring-security-oauth2