180 단어
1 분
스프링 시큐리티 내부 동작
스프링 시큐리티 내부 동작

1. 사용자가 보호된 API에 접근
SecurityContextPersistenceFilter등 기본 Filter chain들이 시작함
2. Authentication 생성
UsernamePasswordAuthenticationFilter가 요청을 가로챔- 파라미터로 넘어온
username,password를 꺼낸다 - 위의 정보를 바탕으로
UsernamePasswordAuthenticationToken을 생성
- 파라미터로 넘어온
3. AuthenticationManger 호출
UsernamePasswordAutenticationFilter->AuthenticationManager(ProviderManger)로 전달AuthenticationManager에서 등록된 provider 중에 인증이 가능한 provider를 찾음UsernamePasswordAuthenticationToken의 경우DaoAuthenticationProvider가 선택됨
4. UserDetailsService 호출
DaoAuthenticationProvider에서UserDetailsSErvice를 호출InmemoryUserDetailsManger나 커스텀 UserDetailsManger에 있는loadUserByUsername()을 호출함 ->UserDetails생성PasswordEncoder.matches()를 호출해서 인증을 함- 인증이 완료 되면
UsernamePasswordAuthenticationToken이 반환됨
- 인증이 완료 되면
5. 인증 정보 저장
AuthenticationManger로 넘어온UsernamePasswordAuthenticationToken을SecutiryContext에 저장SecutiryContextHolder.getContext().setAuthentication(token)
스프링 시큐리티 내부 동작
https://realits.me/posts/spring-security-internal-flow/