我正在尝试将spring-security-oauth添加到具有spring-security的现有应用程序中.我正在使用Java配置.
我有一个现有的修改过滤器链(添加了一些自定义过滤器)但是对’/ oauth / token’的请求没有使用它,而是使用’默认’过滤器链.如何才能访问保护oauth端点的过滤器链,以便我可以在那里使用自定义过滤器,还是可以将OAuth端点连接到现有设置中?
解决方法:
使用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 ...
}
与HttpSecurity的addFilterXYX方法相比,这里没有细粒度的影响,过滤器将位于过滤器链中. addTokenEndpointAuthenticationFilter添加的任何过滤器都将插入BasicAuthenticationFilter之前.
如果需要以更详细的方式控制过滤器的位置,则可以创建扩展AuthorizationServerConfigurerAdapter的bean,而不是使用注释@EnableAuthorizationServer.我没有尝试,但我想你可以扩展AuthorizationServerSecurityConfigurationlike systemfreund建议,而不必指定@Order(-1),因为只导入自定义配置.可能你还需要@Import AuthorizationServerEndpointsConfiguration,就像它在便利注释@EnableAuthorizationServer中完成的那样.
标签:spring,oauth,oauth-2-0,spring-security
来源: https://codeday.me/bug/20190609/1203618.html