
AuthenticationException과 AuthrizationException은 ExceptionTranslationFilter에서 처리된다. 하지만
Oauth2Filter에서 AuthenticationException을 발생시키면, ExceptionTranslationFilter에서 AuthenticationException을 처리하지 못하고 바로 서블릿으로 반환된다. 그 이유는 바로 필터의 순서에 있다.

Oauth2Filter는 UsernamePasswordAuthenticationFilter 앞단에 위치한다. 따라서 해당 필터에서 발생한 Exception을 처리하기 위해서는 예외를 처리하는 필터가 해당 필터 앞단에 위치해야한다. 하지만 ExceptionTranslationFilter는 필터의 거의 끝단에 위치한다.
그러면 ExceptionTranslationFilter는 어떻게 AuthenticationException과 AuthrizationException을 처리하지??
ExceptionTranslationFilter는 FilterSecurityInterceptor에서 발생한 예외를 잡아 처리하는데, 이 FilterSecurityInterceptor 인증과 인가를 확인하고 예외를 발생시키는 것이다.
FilterSecurityInterceptor는 depredated되어 현재 AuthroizationFilter로 변경되었다.
그럼 해당 필터를 확인해보자.


필터를 확인해보면, try catch를 통해 AccessDeniedException과, AuthenticationCredentialsNotFoundException 등 인증 인가 예외를 던지는 것을 알 수가 있다.

ExceptionTranslateFilter는 던져진 예외를 이와 같이 처리하게 된다.!