[TIL] Spring Secutiy 인증, 인가 예외 처리

썸머·2023년 4월 5일
0

TIL(Today I Learn)

목록 보기
2/3

0. 목차

  1. Spring Security 예외
  2. 예외 처리 흐름
  3. 예외 처리하기
  4. @ControllerAdvice로 예외처리 안되는 이유

1. Spring Security의 예외

  • Security 필터에 의해 발생하는 예외 2가지
    • 인증(Authentication) → AuthenticationException
    • 인가(Authorization) → AccessDeniedException

2. 예외 처리 흐름

1) FilterSecurityInterceptor : 예외 터트림

2) ExceptionTranslationFilter : 예외 처리

  • AuthenticationException(인증예외) 처리
    • AuthenticationEntryPoint를 호출한다.기본적으로는 로그인 페이지로 이동 + HTTP 상태코드 401 세팅을 한다.
    • 인증 예외가 발생하기 전의 요청 정보를 세션에 저장한다. 개발자는 RequestCache를 통해서 SavedRequest 를 추출하여 이전 요청 정보를 꺼내올 수 있다.
  • AccessDeniedException(인가예외) 처리
    • AccessDeniedHandler에 의한 예외 처리를 위임한다.

3 .예외 처리하기

@EnableWebSecurity
@Configuration
public class SecurityConfig {
	
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
    	http.csrf().disable();
        
        ....
        
        // 예외 핸들링 메서드
      http.exceptionHandling()
                .authenticationEntryPoint((request, response, authException) -> {
                    // 인증 예외 핸들링 코드
                })
                .accessDeniedHandler((request, response, accessDeniedException) -> {
                    // 인가 예외 핸들링 코드
                });
    }
}

4. @ControllerAdvice로 예외처리 안되는 이유

  • FIlter에서 발생한 예외는 @ControllerAdvice의 적용범위 밖이다.
profile
썸머의 개발블로그

0개의 댓글