Spring Security: oauth2Login перенаправляет только на определенные пути - PullRequest
0 голосов
/ 17 июня 2020

У меня Spring Security настроен для аутентификации моего веб-сайта, так что все пути автоматически перенаправляются на URL-адрес авторизации OAuth2 (с использованием .oauth2Login()). Однако я хочу, чтобы неаутентифицированные запросы к API (например, /api/**) возвращали 401 Unauthorized вместо перенаправления. Я не могу понять, как это сделать. Любая помощь будет принята с благодарностью.

Вот моя текущая конфигурация:

http
    .authorizeRequests()
    .antMatchers("/api/auth/oauth2/callback").permitAll()
    .anyRequest().authenticated()
    .oauth2Login()
    .authorizationEndpoint()
    .baseUri(this.oauth2AuthorizationRedirectBaseUri);

http.logout()
    .logoutUrl("/auth/logout")
    .invalidateHttpSession(true)
    .deleteCookies("JSESSIONID");

1 Ответ

0 голосов
/ 17 июня 2020

Вы можете определить пользовательскую точку входа аутентификации для / API / ** и добавить t в свою конфигурацию:

@Component
public class CustomAuthenticationEntryPoint extends BasicAuthenticationEntryPoint {

    @Override
    public void commence(
      HttpServletRequest request, HttpServletResponse response, AuthenticationException authEx) 
      throws IOException, ServletException {
        response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
    }

@Override
public void afterPropertiesSet() throws Exception {
    setRealmName("developers");
    super.afterPropertiesSet();
}

}

в конфигурациях безопасности Http добавить:

 http.
     ...
     .exceptionHandling()
     .defaultAuthenticationEntryPointFor(
              new CustomAuthenticationEntryPoint(),
              new AntPathRequestMatcher("/api/**"))
...