Filter 체인
- Spring Security는 다양한 Filter들의 체인으로 구성
- 이 Filter 체인은 Request를 가로챈 후 일련의 절차를 처리
- UsernamePasswordAuthenticationFilter는 사용자가 제출한 인증정보 처리
UsernamePasswordAuthenticationToken
- UsernamePasswordAuthenticationFilter는 UsernamePasswordAuthenticationToken을 생성하여 AuthenticationManager에게 전달
- 이 토큰에는 사용자가 제출한 인증 정보가 포함되어 있음
AuthenticationManager
- AuthenticationManager는 실제로 인증을 수행
- 여러 AuthenticationProvider들을 이용
AuthenticationProvider
- 각각의 Provider들은 특정 유형의 인증을 처리
- Ex. DaoAuthenticationProvider는 사용자 정보를 DB에서 가져와 인증을 수행
PasswordEncoder
- 인증과 인가에서 사용될 패스워드의 인코딩 방식을 지정
UserDetailsService
- AuthenticationProvider는 UserDetailsService를 사용하여 사용자 정보를 가져옴
- UserDetailsService는 사용자의 아이디를 받아 loadByUsername을 호출하여 해당 사용자의 UserDetails를 반환
UserDetails
- UserDetails에는 사용자의 아이디, 비밀번호, 권한 등이 포함