경주장

[인증/인가 API] 예외 처리 및 요청 캐시 필터 본문

스프링/스프링 시큐리티

[인증/인가 API] 예외 처리 및 요청 캐시 필터

달리는치타 2022. 2. 6. 21:38

ExceptionTranslationFilter - 예외 처리 필터

- AuthenticationException : 인증 예외

  • AuthenticationEntryPoint 호출 - 로그인 페이지 이동/ 401 오류 코드 전달 등
  • 인증 예외가 발생하기 전의 요청 정보를 저장
    • RequestCache - 사용자의 이전 요청 정보를 세션에 저장하고 이를 꺼내오는 캐시 메커니즘
      • SavedRequest - 사용자가 요청했던 request 파라미터 값들, 헤더 값 등이 저장

 

 

- AccessDeniedExeption : 인가 예외

  • AccessDeniedHandler에서 예외 처리 하도록 제공

 

http.exceptionHandling() - 예외 처리 기능 설정

 

 http.exceptionHandling() 					
		.authenticationEntryPoint(authenticationEntryPoint())     		// 인증실패 시 처리
		.accessDeniedHandler(accessDeniedHandler()) 			// 인증실패 시 처리

RequestCacheAwareFilter - 요청 캐시를 확인하는 필터

 

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest wrappedSavedRequest = this.requestCache.getMatchingRequest((HttpServletRequest)request, (HttpServletResponse)response);
    chain.doFilter((ServletRequest)(wrappedSavedRequest != null ? wrappedSavedRequest : request), response);
}

스프링 시큐리티의 필터중 가장 가장 간단한 필터 같다..

requestCache를 매번 확인하여 있다면 requset를 이전에 요청 받은 요청 정보로 바꾸어 다음 필터를 호출한다.