我有很多 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()` 对他们两个?
暂无答案!
目前还没有任何答案,快来回答吧!