티스토리 뷰

Spring

Spring Security 흐름

땅속 디그다 2022. 9. 27. 15:22

Spring Security Stream

스프링 시큐리티의 제일 중요한 포인트는 인증(Authentication) 과 허가 (Authorization)이다.

  • 인증 - '누구인지 증명하는 과정'
  • 인가(허가) - '권한이 있는지 확인하는 과정'

모든 HTTP 통신이 거쳐야하는 FilterChain

크게 보면 사용자가 건드려야 할 것

  • 인증 필터 => AuthenticationFilter
  • 인가 필터 => FilterSecurityInterceptor

AuthenticationFilter 의 AuthenticationManager 에서 인증을 위임
FilterSecurityInterceptor 의 AccessDecisionManager 에서 인가를 위임


Authentication 과정

만약 AuthenticationFilter 에서 인증이 실패 할 경우 (로그인 실패 할 경우)

AuthenticationFailureHandler 를 호출하여 후처리

만약 성공 할 경우 AuthenticationSuccessHandler 를 통해서 후처리를 담당
후처리 과정에서 Session 로그인을 진행 할 경우 세션 저장소에 SecurityContext를 저장하는 등의 과정을 수행한다.

즉, 만약 스프링 시큐리티의 Authentication 을 사용한다면 Filter 에서 인증을 처리 후에 결과 return 된다

인증을 하는 과정에는 주로 Username/Password를 사용하고 persistence level 에서 DB조회를 통한
확인 절차를 거치게 되는데, 주로 USerDetails, UserDetailsService 를 implement 해서 사용하게 된다.

 

image


Authorization 과정

기본적으로 FilterSecurityInterceptor 를 활용한 Authorization 을 사용하게 된다.

인가에 실패하게 될 경우 FilterSecurityInterceptor 는 AccessDeniedException 을 throw 하게 되고, ExceptionTranslationFilter 에서 catch 하게 된다.

인가에 대한 오류 후처리는 ExceptionTranslationFilter 에서 담당하게 된다.

따라서 오류필터 내부에는 후처리기인 AccessDeniedHandler 가 존재하게 된다.

 

image

'Spring' 카테고리의 다른 글

spring 복습을 하면서 정리 (아는 만큼 보인다)  (0) 2022.10.11
설계에 대한 고민거리 3/22  (0) 2022.03.23
댓글
01-29 08:52
Total
Today
Yesterday
링크