Я установил сервер авторизации OAUTH, который должен разрешать клиентам запрашивать токены. Также предполагается, что пользователи-администраторы могут выполнять другие операции.
В моей конфигурации веб-безопасности:
@Configuration
@EnableWebSecurity
public class ApiSecurityConfig extends WebSecurityConfigurerAdapter {
private @Autowired CustomAuthenticationProvider authenticationProvider;
private @Autowired CustomAuthenticationEntryPoint entryPoint;
@Override
@Bean
protected AuthenticationManager authenticationManager() throws Exception {
return super.authenticationManager();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().httpBasic().and().cors().and()
.authorizeRequests()
.antMatchers(HttpMethod.OPTIONS, "/oauth/token").permitAll()
.anyRequest()
.authenticated()
.and()
.exceptionHandling()
.authenticationEntryPoint(entryPoint)
.defaultAuthenticationEntryPointFor(entryPoint, new AntPathRequestMatcher("/api/v1/**"));
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(authenticationProvider);
}
}
В идеале, когда пользователь-администратор пытается вызвать любую конечную точку в / api / v1 / ** ", они должны быть аутентифицированы - и на самом деле это так.
Проблема теперь заключается в том, что при сбое аутентификации конечная точка входа аутентификации игнорируется. Я не понимаю, почему это так.
Я даже включил «точку входа аутентификации по умолчанию для», просто чтобы посмотреть, поможет ли это, но это не помогло.
Пожалуйста, как это сделать? Я разрешаю это?