yeon's blog
[Spring] Spring Security 처리 과정 본문
지난 포스트에 이어 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를 참조하고 있습니다.
'Spring > Spring 개념' 카테고리의 다른 글
[Spring] HTTP 요청 매핑 및 API 예시 (0) | 2024.01.14 |
---|---|
[Spring] 로그(Log)와 로깅 프레임워크(Logging Framework) (2) | 2024.01.13 |
[Spring] Spring Security 개념 (0) | 2023.12.12 |
[Spring] 프로그램 구조 설계 (0) | 2023.12.12 |
[Spring] 스프링 컨테이너 (0) | 2023.11.30 |