Пользовательская точка входа аутентификации не вызывается при неудачной аутентификации - PullRequest
0 голосов
/ 20 февраля 2020

Я установил сервер авторизации 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 / ** ", они должны быть аутентифицированы - и на самом деле это так.

Проблема теперь заключается в том, что при сбое аутентификации конечная точка входа аутентификации игнорируется. Я не понимаю, почему это так.

Я даже включил «точку входа аутентификации по умолчанию для», просто чтобы посмотреть, поможет ли это, но это не помогло.

Пожалуйста, как это сделать? Я разрешаю это?

1 Ответ

0 голосов
/ 21 февраля 2020

Поработав с конфигурацией безопасности http, я черпал вдохновение из этой статьи (https://www.baeldung.com/spring-security-basic-authentication) и изменил ее на:

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable().cors().and()
                .authorizeRequests()
                .antMatchers(HttpMethod.OPTIONS, "/oauth/token").permitAll()
                .anyRequest().authenticated()
                .and()
                .httpBasic().authenticationEntryPoint(entryPoint);
     }

Честно говоря, я не знаю почему то, что у меня было раньше, не работало. Множество людей опубликовали это как решение проблем, связанных с конечными точками входа. Но я думаю, может быть, что-то изменилось весной, о чем я не знаю.

...