Я пытаюсь реализовать API с ресурсами, которые защищены аутентификацией Oauth2 ИЛИ Http-Basic.
Когда я загружаю WebSecurityConfigurerAdapter, который сначала применяет HTTP-базовую аутентификацию к ресурсу, аутентификация маркера Oauth2 не принимается. И наоборот.
Примеры конфигураций: Это относится к HTTP-базовой аутентификации ко всем /user/ ** resources
@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
private LoginApi loginApi;
@Autowired
public void setLoginApi(LoginApi loginApi) {
this.loginApi = loginApi;
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(new PortalUserAuthenticationProvider(loginApi));
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/users/**").authenticated()
.and()
.httpBasic();
}
@Override
@Bean
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
}
Это относится к защите маркера oauth к ресурсу /user/ **
@Configuration
@EnableResourceServer
protected static class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http
.requestMatchers().antMatchers("/users/**")
.and()
.authorizeRequests()
.antMatchers("/users/**").access("#oauth2.clientHasRole('ROLE_CLIENT') and #oauth2.hasScope('read')");
}
}
Я уверен, что есть какой-то фрагмент волшебного кода, который мне не хватает, который сообщает spring попробовать оба, если первый не сработал?
Любая помощь будет наиболее оценена.