【问题标题】:Spring OAuth Filter Chain & Java ConfigSpring OAuth 过滤器链和 Java 配置
【发布时间】:2015-11-04 03:46:26
【问题描述】:

我正在尝试将 spring-security-oauth 添加到具有 spring-security 的现有应用程序中。我正在使用 Java 配置。

我有一个现有的修改过滤器链(添加了一些自定义过滤器),但对“/oauth/token”的请求没有使用它,而是使用“默认”过滤器链。如何访问保护 oauth 端点的过滤器链,以便我也可以在那里使用自定义过滤器,或者我可以将 OAuth 端点连接到现有设置中?

【问题讨论】:

  • 提供spring security oauth2配置。

标签: spring oauth spring-security oauth-2.0


【解决方案1】:

这可能不是最好的方法,但我没有找到更好的方法。这个想法是提供一个自定义的AuthorizationServerSecurityConfiguration 实例并通过@EnableAuthorizationServer 覆盖默认实例@Imported。我们只需要确保添加优先级高于默认配置的@Order 注解即可:

@EnableAuthorizationServer
@Import(CustomSecurityConfig.class)
public class Application {
}

@Configuration
@Order(-1)
public class CustomSecurityConfig extends AuthorizationServerSecurityConfiguration {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        super.configure(http); // do the default configuration first

        http
            .addFilterBefore(new MyFilter(), ...);
    }

}

【讨论】:

    【解决方案2】:

    使用AuthorizationServerConfigurer 接口确实有一种更流畅的方式。 您可以坚持注解@EnableAuthorizationServer 并在您的配置文件中实现上述接口。这将使您能够通过执行以下操作来更改 oauth2-filter-chain:

    @Configuration
    @EnableWebSecurity
    @EnableAuthorizationServer
    public class SecurityConfig extends WebSecurityConfigurerAdapter 
    implements AuthorizationServerConfigurer
        // some configuration ...
    
        public void configure(AuthorizationServerSecurityConfigurer oauthSecurity) throws Exception {
            oauthSecurity.addTokenEndpointAuthenticationFilter(new YourFilter());
        }
    
        // more configuration ...
    }
    

    HttpSecurityaddFilterXYX 方法相比,您在此处对过滤器在过滤器链中的位置没有细粒度的影响。 addTokenEndpointAuthenticationFilter 添加的任何过滤器都将插入到BasicAuthenticationFilter 之前。

    如果您需要以更详细的方式控制过滤器的位置,您可以创建一个扩展 AuthorizationServerConfigurerAdapter 的 bean,而不是使用注解 @EnableAuthorizationServer。我没有尝试过,但我想您可以像 systemfreund 建议的那样扩展AuthorizationServerSecurityConfiguration,而不必指定@Order(-1),因为只有您的自定义配置会被导入。可能您还必须 @Import AuthorizationServerEndpointsConfiguration 就像在便利注释 @EnableAuthorizationServer 中所做的那样。

    【讨论】:

      猜你喜欢
      • 2015-05-14
      • 2017-01-21
      • 2016-07-13
      • 2020-07-10
      • 2016-03-10
      • 1970-01-01
      • 2015-07-10
      • 2015-05-27
      • 2013-06-16
      相关资源
      最近更新 更多