Day 40
1. 스프링 시큐리티
스프링 시큐리티는 클라이언트로부터 요청이 들어올 때 그 요청에 대한 유효성을 걸러주는 프레임워크다. 스프링 시큐리티의 큰 구조는 유효성을 검사하는 필터와 필터들을 이어주는 체인으로 이루어진 filterchain으로 구성되어 있다.
이 filterChain은 서블릿 컨테이너에 있는데 여러 필터 중 DelegateFilterProxy라는 필터가 서블릿 컨테이너와 스프링 컨테이너를 연결해주는 다리 역할을 한다. 이 필터의 FilterChainProxy를 이용해서 스프링 시큐리티의 SecurityFilterChain에게 요청을 위임한다.

SecurityFilterChain애는 여러 필터가 존재하고 체인을 이용하여 필터들을 거치면서 요청을 검사하게 된다.
많은 필터들 중에서 로그인 기능을 담당하는 로직을 살펴볼건데 대략적인 전개도는 다음과 같다.

- 로그인 요청
- UserPasswordAuthenticationToken 발급
-
UserPasswordAuthenticationToken을 AuthenticationManager에게 전달
- AuthenticationManager는 인증을 처리할 여러 AuthenticationProvider를 가지고 있음
-
UserPasswordAuthenticationToken을 AuthenticationProvider에게 전달
- AuthenticationManager가 순차적으로 AuthenticationProvider에게 전달하면서 인증의 과정을 수행
-
UserDetailsService로 조회할 아이디 전달
- AuthenticationProvider에서 아이디를 조회했으면, UserDetailService로 아이디를 전달한다.
- UserDetail에서 아이디를 기반으로 DB에서 데이터 조회
- 아이디를 기반으로 조회한 결과를 반환
- 인증된 토큰을 AuthenticationManager에게 반환
- 인증된 토큰을 AuthenticationFilter에게 전달
- 인증된 토큰을 SecurityContext에 저장
'항해99 > TIL | WIL' 카테고리의 다른 글
| WIL (5주) (0) | 2023.02.19 |
|---|---|
| 2023.02.18 (41일) (0) | 2023.02.19 |
| 2023.02.16 (39일) (0) | 2023.02.17 |
| 2023.02.15 (38일) (0) | 2023.02.16 |
| 2023.02.14 (37일) (0) | 2023.02.15 |