spring security 5.2带oauth2resourceserver的多Web安全配置适配器

jhkqcmku  于 2021-09-29  发布在  Java
关注(0)|答案(0)|浏览(175)

我有很多 WebSecurityConfigurerAdapter 在我的代码中,每个都驻留在不同的类中。我们正在迁移到SpringSecurity5.2,因此,我们应该删除 @EnableResourceServer 并将其替换为 oauth2RespourceServer dsl方式。
第一 WebSecurityConfigurerAdapter 被称为 CommonWebSecurityConfig ,它包括许多没有任何共享前缀的ant Matcher:

@Configuration
@EnableWebSecurity
@ComponentScan
@Order(Ordered.HIGHEST_PRECEDENCE)
public class CommonWebSecurityAutoConfiguration extends WebSecurityConfigurerAdapter {

@Override
public void configure(HttpSecurity http) throws Exception {

    http
        //  .requestMatchers()
        //  .antMatchers("/* Should I add all (long) list of matchers here?*/")
        //  .and()

            .authorizeRequests()

            .antMatchers(GET, "/health").permitAll()
            .antMatchers("/loggers/**").hasAuthority("scope1")
            .antMatchers("/info/**").hasAuthority("scope2")
            .antMatchers("/metrics/**").hasAuthority("scope3")
            .antMatchers("/configurations/**").hasAuthority("scope4")
            .antMatchers("/odata.svc/**").hasAuthority("scope5")
            .antMatchers("/dataCenters/**").hasAuthority("scope6")
            .antMatchers("/metadata/v1**").hasAuthority("scope7")
            ... 
            ... 
            ... 
            ... 
            ... 
            ... // list goes on
            ...

            .and()
            .oauth2ResourceServer()
            .jwt()
            .jwtAuthenticationConverter(getJwtAuthoritiesConverter());  
}

第二个Web安全配置适配器是 AccountsWebSecurityConfig 意味着要成为第二个被验证的对象。i、 e.如果请求与中的任何ant匹配器不匹配 CommonWebSecurityConfig ,则应根据 AccountsWebSecurityConfig ```
@Configuration
@EnableWebSecurity
@ComponentScan(basePackages = "com.xyz..**.security")
@Order(AFTER_COMMON)
public class AccountsWebSecurityConfig extends WebSecurityConfigurerAdapter {

@Override
public void configure(HttpSecurity http) throws Exception {

    http
        //  .requestMatchers()
        //  .antMatchers("/accounts/**") 
        //  .and()

    .authorizeRequests()

        .mvcMatchers("/accounts/v1/go").hasAuthority("scope33")
        ... 
        ... // list goes on
        ... 
    .and()
        .oauth2ResourceServer()
        .jwt()
        .jwtAuthenticationConverter(getJwtAuthoritiesConverter());  

}

我的问题是:
未根据验证请求 `AccountsWebSecurityConfig` :任何以“帐户”开头的请求都被授予访问权限!当我取消注解开头的3行时 `configure()` 这两门课都开始起作用。这与我们在SpringSecurity5.2之前的行为不同:我们不必添加requestmatchers使其工作。这是新的要求吗?
如果是,那么我是否必须将RequestMatcher添加到所有AntMatcher?如果我有那么多不共享前缀的,比如 `CommonWebSecurityConfig` ?
我必须补充吗 `and().oauth2ResourceServer()` 对他们两个?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题