yeon's blog

[Spring] Spring Security 처리 과정 본문

Spring/Spring 개념

[Spring] Spring Security 처리 과정

yeonii 2023. 12. 12. 16:57

지난 포스트에 이어 Spring Security의 인증 처리 과정에 대해 알아보려 한다.

 

4. Spring Security 인증 처리 과정

 

1) 클라이언트(유저)가 로그인을 요청한다. → Http Request 수신

 

 

2-1) AuthenticationFilter에서 인증을 처리한다.

Servlet Filter에 의해서 Security Filter로 Security 작업이 위임되고 (AuthenticationFilter가 요청을 가로챔),

여러 Security Filter 중에서 UsernamePasswordAuthenticationFilter에서 인증을 처리한다.

 

 

2-2) UsernameAuthenticationToken 발급

AuthenticationFilter는 HttpServletRequest에서 아이디와 비밀번호를 추출하여 UsernameAuthenticationToken을 발급한다.

 

 

3) AuthenticationManager에게 인증 객체 전달

AuthenticationFilter는 AuthenticationManager에게 인증 객체를 전달한다.

AuthenticationManager는 인증을 담당한다. 그래서 2번에서 발급한 토큰이 올바른 유저인지 확인한다.

 

 

4) 인증을 위해 AuthenticationProvider에게 인증 객체 전달

 

 

5) 전달받은 인증 객체의 정보를 UserDetailsService에 전달

AuthenticationProvider는 전달받은 인증 객체의 정보를 UserDetailsService에 넘겨준다.

 

 

6) UserDetails 구현 객체 생성

UserDetailsService는 전달받은 사용자 정보를 통해 DB에서 알맞은 사용자를 찾고 이를 기반으로 UserDetails를 구현한 객체를 반환한다.

 

 

7) UserDetails 객체를 AuthenticationProvider에 전달

 

 

8) ProviderManager에게 권한을 담은 검증된 인증 객체를 전달

AuthenticationProvider는 전달받은 UserDetails를 인증해 성공하면 ProviderManager에게 권한을 담은 인증 객체를 전달한다.

 

 

9) 검증된 인증 객체를 AuthenticationFilter에게 전달

ProviderManager가 AuthenticationFilter에 전달한다.

 

 

10) 검증된 인증 객체를 SecurityContextHolder의 SecurityContext에 저장

AuthenticationFilter가 UserDetails 정보를 SecurityContextHolder에 저장한다.

사용자 정보를 저장한다는 것은 Spring Security가 세션-쿠키 기반의 인증 방식을 사용한다는 것을 의미한다.

 

 

이 글은 khope.log 님의 velog를 참조하고 있습니다.