gpt4 book ai didi

spring - 多个 WebSecurityConfigurerAdapter 和过滤器链

转载 作者:行者123 更新时间:2023-12-05 03:08:04 28 4
gpt4 key购买 nike

我正在尝试为我的应用程序配置多种身份验证类型,为每种类型的身份验证使用单独的 WebSecurityConfigurerAdapter。

总体思路是使用 WebSecurityConfigurerAdapter configure(HttpSecurity http) 方法来匹配 url 模式,并使用专用的专有过滤器(包括授权)进行所有身份验证。

@Configuration
@EnableWebSecurity
public class DemoMultipleWebSecurityConfigurerAdapter {

@Order(1)
@Configuration
public static class BasicSecurityAdapter extends WebSecurityConfigurerAdapter {

@Override
public void configure(HttpSecurity http) throws Exception {
String endpointPattern = "/api/basic/**";
http.requestMatchers().antMatchers(endpointPattern);
http.csrf().ignoringAntMatchers(endpointPattern);
http.authorizeRequests().antMatchers(endpointPattern).authenticated();


http.addFilterBefore(new MyBasicAuthFilter(), LogoutFilter.class);
}
}

@Order(2)
@Configuration
public static class SSOSecurityAdapter extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
String endpointPattern = "/api/sso/**";
http.requestMatchers().antMatchers(endpointPattern);
http.csrf().ignoringAntMatchers(endpointPattern);
http.authorizeRequests().antMatchers(endpointPattern).authenticated();


http.addFilterBefore(new MySSOAuthFilter(), LogoutFilter.class);
}
}
}

在初始化过程中,我可以看到每个 WebSecurityConfigurerAdapter 都获得了一个不同的 HttpSecurity 实例来配置(它应该有自己的过滤器链)但是在运行时,被调用的过滤器链总是为第一个 WebSecurityConfigurerAdapter 创建的 no不管我调用哪个端点。

根据文档,Spring 应该使用 HttpSecurity 实例来找到要过滤的正确过滤器链(根据 url 模式)。

对我做错了什么有什么想法吗?(我正在使用 Spring 1.5.6-RELEASE 对此进行测试)

最佳答案

你不需要多个WebSecurityConfigurerAdapter;只需配置过滤器,使其仅用于匹配 URL 模式。换句话说,添加所有过滤器,但使过滤器有条件地起作用。

关于spring - 多个 WebSecurityConfigurerAdapter 和过滤器链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46064446/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com