개발 일기

[Spring Security] Spring Security Authentication Architecture 본문

Back-End/Spring

[Spring Security] Spring Security Authentication Architecture

개발 일기장 주인 2024. 5. 3. 00:30

Spring Security Authentication Architecture

  1. HTTP 요청 수신: 사용자가 로그인 정보와 함께 HTTP 인증 요청을 보낸다
  2. 유저 정보 기반 인증 토큰 생성: AuthenticationFilter가 요청을 가로채고, 사용자가 제공한 정보를 기반으로 UsernamePasswordAuthenticationToken이라는 인증용 객체를 생성한다.
  3. Filter를 통한 AuthenticationToken 전달: 생성된 AuthenticationToken은 Filter를 통해 AuthenticationManager로 전달된다.
  4. AuthenticationProvider 목록으로 인증 시도: AuthenticationManager는 등록된 AuthenticationProvider들을 조회하며 인증을 시도한다.
  5. UserDetailsService의 요구: 인증 시도 중에 실제 사용자 인증 정보를 가져오는 UserDetailsService에 사용자 정보를 전달한다.
  6. UserDetails를 이용한 사용자 정보 조회: UserDetailsService는 전달받은 사용자 정보를 기반으로 데이터베이스에서 사용자 정보를 조회하여 UserDetails 객체를 생성한다.
  7. UserDetails를 통한 사용자 정보 비교: AuthenticationProvider들은 전달받은 UserDetails를 사용하여 사용자 정보를 비교하여 인증을 시도한다.
  8. 인증 객체 반환 또는 AuthenticationException: 인증이 완료되면 사용자의 권한 등을 포함한 Authentication 객체를 반환하거나, 인증에 실패하면 AuthenticationException을 발생시킨다.
  9. 인증 완료: 최초의 AuthenticationFilter에 인증된 Authentication 객체가 반환된다.
  10. SecurityContext에 인증 객체 설정: 반환된 Authentication 객체는 SecurityContext에 저장되어 현재 사용자의 인증 상태를 유지한다.