스프링 시큐리티 - 기본적인 로그인 과정

HUSII·2023년 8월 21일
0

스프링 시큐리티

목록 보기
4/7

스프링 시큐리티 공식 문서를 읽고, 라이브러리 코드들을 뜯어보면서 공부했습니다.
인증은 username/password 인증을 기준으로 설명하겠습니다.

username/password를 기준으로 하고, 시큐리티에 다른 설정을 하지 않았을때
(커스텀 AuthenticationManager나 AuthenticationProvider을 설정하지 않음)
인증 필터가 사용자 인증을 수행되는 과정을 설명합니다.

  1. AuthenticationFilter가 request를 받음
  2. 받은 request에 있는 username/password를 이용해 UsernamePasswordAuthenticationToken 생성
  3. Token을 AuthenticationManager에게 보내면서 인증 진행 (대표적인 구현 객체는 ProviderManager)
  4. ProviderManager는 현재 Token을 인증을 할 수 있는 AuthenticationProvider를 search & 해당 Provider에게 Token 보내면서 인증 진행
  5. 해당 Provider는 UserDetailsService에게 Token에 있는 username으로 DB 조회 요청
  6. UserDetailsService는 username를 통해 DB로부터 사용자 정보를 조회한다. & 해당 사용자 정보로 UserDetails 생성
  7. AuthenticationProvider는 UserDetailsService로부터 받은 UserDetails를 통해 사용자 인증 진행

    (DB에 있는 유저 password와 request로 받은 password가 일치하는지)

  8. 인증 성공하면 해당 사용자 정보 객체(Authentication 객체)를 AuthenticationManager로 반환
  9. Authentication 객체 AuthenticationFilter로 반환
  10. AuthenticationFilter가 받은 Authentication 객체를 SecurityContext에 저장하면서 인증 종료

    다음 필터로 넘어갑니다.

AuthenticationFilter는 interface가 아니라 인증을 진행하는 필터를 의미합니다.
UsernamePasswordAuthenticationFilter, BasicAuthenticationFilter가 이에 해당합니다.

개인적으로 공부한 내용을 정리한 글입니다.
지적, 피드백 환엽합니다.

profile
공부하다가 생긴 궁금한 것들을 정리하는 공간

0개의 댓글