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

스프링 시큐리티 내부 동작#

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로 넘어온 UsernamePasswordAuthenticationTokenSecutiryContext에 저장
    • SecutiryContextHolder.getContext().setAuthentication(token)
스프링 시큐리티 내부 동작
https://realits.me/posts/spring-security-internal-flow/
저자
realitsyourman
게시일
2025-05-07
라이선스
CC BY-NC-SA 4.0