seok의 패치노트
[Security] ExceptionTranslationFilter 본문
ExceptionTranslationFilter
- 인증과 인가에 대한 예외를 처리하는 필터이다.
- 시큐리티 필터중에 맨뒤에 있는 FilterSecurityInterceptor 바로앞에 존재한다.
- 사용자에 요청을 받아 FilterSecurityInterceptor에게 전달해주기 위해 try~catch 로 감싸서 FilterSecurityInterceptor를 호출하여 전달한다.
- FilterSecurityInterceptor에서 발생하는 인증,인가 예외는 자신을 호출한 ExceptionTranslationFilter에게 던진다.
- FilterSecurityInterceptor가 던진 예외를 받아 AuthenticationException , AccessDeniedException 에 대해 처리하게된다.
* AuthenticationException(인증) 관련처리
1. 로그인 페이지로 이동
- 익셉션 발생시 AuthenticationEntryPoint 라는 이름을 가진 인터페이스를 호출하게 되는데 관련 구현체를 스프링 시큐리티가 제공해준다.(구현체는 우리가 만들어 커스텀하게 처리해도됨!!)
- 처리 결과로 로그인페이지 이동 및 401 오류 코드를 전달한다.
2. 사용자 최종 요청정보 저장
#RequestCache
- 인증예외가 발생하기 전에 사용자의 마지막 요청정보를 저장해 두었다가 인증 완료후 저장해둔 마지막 요청정보를 읽어들여 이동하게 해준다.
- savedRequest 구현체를 세션에 저장해두었다가 꺼내는 역활을 한다.
#SavedRequest
- 인증예외가 발생하기 이전 사용자가 요청했던 request 파라미터값 , 및 헤더값들을 저장하는 역활을한다.
- 인터페이스이고 구현체는 시큐리티가 제공해준다.
- 세션 영역에 인증에 실패한 사용자의 마지막 요청정보를 남아둔다.
* AccessDeniedException
- 인가(권한) 예외 처리를 담당한다.
- 유저가 권한이 없는곳에 요청했을경우 AccessDeniedHandler를 호출하여 예외를 처리할 수 있게 한다.
- AccessDeniedHandler 는 인터페이스 이며 구현체는 시큐리티가 제공한다.
'Spring > Security' 카테고리의 다른 글
[Security] csrf Filter (0) | 2022.01.02 |
---|---|
[Security] SessionManagementFilter, ConcurrentSessionFilter - 동시세션 제어 (0) | 2021.12.29 |
[Security] 고정세션 보호 - 고정세션 공격방어! (0) | 2021.12.28 |
[Security] 동시세션 제어 (0) | 2021.12.28 |
[Security] AnonymouseFilter - Guest 유저를 위함 (0) | 2021.12.28 |