Tech/Spring

Spring Security 로그인 동작 원리

봄의 개발자 2024. 1. 27.

목차

728x90
반응형

Spring Security 로그인 동작 원리 - undefined - 모든 영역

1. 로그인 요청

  • 사용자가 Form을 통해 로그인 정보가 담긴 요청을 보냄

2. Authentication 생성

  • AuthenticationFilter가 요청을 받아서 UsernamePasswordAuthenticationToken(Authentication 구현 객체) 생성

3. Authentication 전달

  • AuthenticationManager가 Authentication을 전달받음
  • AuthenticationManager는 실제 인증 역할을 하는 AuthenticationProvider를 관리함

4. 인증을 위한 Authentication 전달

  • AuthenticationFilter로 부터 Authentication 객체를 받아 인증 처리를 할 수 있는 AuthenticationProvider에게 인증 역할을 위임함

5. UserDetails 조회

  • UserDetailsService를 구현한 클래스에서 loadUserByUsername 메서드를 오버라이딩해서 사용자 정보를 조회함

6. Credential 조회

  • 저장소에서 사용자의 Credential을 포함한 정보를 조회함

7. UserDetails 생성

  • loadUserByUsername 메서드에서 조회한 정보를 기반으로 UserDetails 객체 생성

8. AuthenticationProvider로 UserDetails 전달

  • AuthenticationProvider가 자격 증명을 수행할 수 있도록 UserDetails 객체를 생성해서 전달함

9. 인증된 Authentication 생성 및 전달 

  • AuthenticationProvider로 UserDetails를 전달하고 PasswordEncoder를 이용해 UserDetail에 포함된 비밀번호와 전달받은 Authentication(인증 되지 않음) 안에 포함된 비밀번호가 일치하는지 검증함
    이때, (a) 과정을 거쳐 Authentication 검증을 수행함 (Lock 상태 여부/비밀번호 일치/회원가입 승인 여부)

Spring Security 로그인 동작 원리 - undefined - 모든 영역
(a)

  • [9] 검증에 성공하면 UserDetails를 이용해 인증된 Authentication을 생성함
  • [10 - 11] AuthenticationManager를 거쳐 UsernamePasswordAuthenticationFilter로 인증된 Authentication을 전달함 

10. 인증된 Authentication을 SecurityContext에 저장 

  • [12] SecurityContextHolder를 이용해 SecurityContext에 인증된 Authentication을 저장함

 

 

728x90
반응형