728x90
ExceptionTranslationFilter
- AuthenticationException
- 인증 예외 처리
- AuthenticationEntryPoint 호출
- 로그인 페이지 이동, 401 오류 코드 전달 등
- 다시금 인증을 실행하도록 해준다.
- 인증 예외가 발생하기 전의 요청 정보를 저장
- 인증을 하기 전의 요청했던 자원정보를 인증이 완료가 되면 해당 자원으로 이동할 수 있도록 캐시에 자원을 저장한다.
- RequestCache - 사용자의 이전 요청 정보를 세션에 저장하고 이를 꺼내 오는 캐시 메커니즘
- SavedRequest - 사용자가 요청했던 request 파라미터 값들, 그 당시의 헤더 값들 등이 저장
- AuthenticationEntryPoint 호출
- 인증 예외 처리
- AccessDeniedException
- 인가 예외 처리
- AccessDeniedHandler에서 예외 처리하도록 제공
- 인가 예외 처리

동작 과정 - FilterSecurityInterceptor에서 요청을 받는데, 인증/인가 예외를 확인한다.
- ExceptionTranslationFilter에서 인증 예외가 발생할 경우
- AuthenticationEntryPoint에서 인증 실패 이후 처리를 한다.
- HttpSessionRequestCache에서 이전 요청에서 가려고 했던 자원정보를 DefaultSavedRequest에 Session으로 저장하고, 인증을 성공했을 때에 세션에 저장한 자원으로 이동하도록 한다.
- ExceptionTranslationFilter에서 인가 예외가 발생할 경우
- AccessDeniedException에서 AccessDeninedHandler를 호출해서 후속처리를 한다.

-
http .exceptionHandling() /* .authenticationEntryPoint(new AuthenticationEntryPoint() { @Override public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException { response.sendRedirect("/login"); } }) */ .accessDeniedHandler(new AccessDeniedHandler() { @Override public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException { response.sendRedirect("/denied"); } }) ; 
인증이 성공하게 되면 세션에 저장된 자원으로 이동하게 해준다.
728x90