spring-security - 在 OAuth2AuthenticationProcessingFilter 之前添加过滤器

标签 spring-security spring-security-oauth2

我在 IDP 模式和 spring-boot 中使用 spring-security-oauth2。在从请求中提取 oauth token 之前,我需要做一些工作。如何在 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: Cannot register after unregistered Filter class org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter



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

最佳答案

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

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

关于spring-security - 在 OAuth2AuthenticationProcessingFilter 之前添加过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46801064/

相关文章:

spring - 如何在 POST 中发送 ClientId 和 ClientSecret,而不是在带有 ClientCredentialsAccessTokenProvider 的 header 中

java - Spring REST api OAuth2 验证来自外部授权服务器的 token

java - 如何从 OAuth2 客户端应用程序中的授权服务器获取作为访问 token 响应一部分的附加信息

Spring Security OAuth2 总是重定向到/login 页面具有有效的 Bearer header

java - 如何使用 Spring Security 以编程方式验证 `User` 并使用我的 `UserDetailsServie` 实现?

java - 从 Spring Security 访问 Spring MVC 服务

grails - 在ExtJS客户端中使用Spring Security进行访问控制?

java - spring session 与 MockHttpSession 不兼容

java - 如何将身份验证从 LDAP 更改为 JDBC 以保护我的应用程序

spring - OAuth2 - Spring 安全 : ClientCredentialsTokenEndpointFilter not working