【问题标题】:Add filter before OAuth2AuthenticationProcessingFilter在 OAuth2AuthenticationProcessingFilter 之前添加过滤器
【发布时间】: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 后无法注册

我猜这可能是因为@EnableResourceServerconfigure(HttpSecurity http) 之后执行。

【问题讨论】:

  • 您可以添加任何interceptor 来代替filter 吗?
  • 我在多个 WebSecurityConfigs 中使用这些过滤器。只要拦截器允许这样做,我就应该能够使用它们。我还需要控制过滤器运行的顺序(TenantFilter 在 JwtFilter 之前运行,而 JwtFilter 又在 WebAsyncManagerIntegrationFilter 等之前运行)。我还需要能够有选择地为不同的 WebSecurityConfigs 使用不同的拦截器。拦截器可以做到这一点吗?你能举个例子吗?
  • 这可能对您有所帮助。 stackoverflow.com/q/11586757/4423636
  • @jax 你解决了吗?我有完全相同的问题,它只会以反模式和丑陋的东西结束:(一旦@EnableResourceServer创建了过滤器链,我希望能够添加一个过滤器。
  • @jax 你解决了这个问题吗?

标签: spring-security spring-security-oauth2


【解决方案1】:

我通过这样做实现了所需的功能

                .addFilterBefore(new MyTokenFilter(), AbstractPreAuthenticatedProcessingFilter.class)

【讨论】:

    【解决方案2】:

    以下对我有用

       @Override
       public void configure(HttpSecurity http) throws Exception {
           http
             .addFilterBefore(new MyFilter(), AbstractPreAuthenticatedProcessingFilter.class)
             .authorizeRequests().anyRequest().fullyAuthenticated()
           ;
       }
    

    结果

    Security filter chain: [
      WebAsyncManagerIntegrationFilter
      SecurityContextPersistenceFilter
      HeaderWriterFilter
      LogoutFilter
      MyFilter
      OAuth2AuthenticationProcessingFilter
      RequestCacheAwareFilter
      SecurityContextHolderAwareRequestFilter
      AnonymousAuthenticationFilter
      SessionManagementFilter
      ExceptionTranslationFilter
      FilterSecurityInterceptor
    ]
    

    【讨论】:

      猜你喜欢
      • 2017-09-10
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      • 2018-07-14
      相关资源
      最近更新 更多