Spring Security - 인증 처리 흐름

uudean·2023년 7월 11일
0

Spring

목록 보기
9/13

Spring Security 인증 처리 흐름

  1. 사용자가 Username(ID)과 Password를 포함한 요청을 Spring Security가 적용된 애플리케이션에 전송. 로그인 요청이 FilterChain 까지 들어 오면 UsernamePasswordAuthenticaiontFilter 가 해당 요청을 전달 받는다.

  2. UsernamePasswordAuthenticaiontFilter 는 Username과 Password를 이용해 UsernamePasswordAuthenticationToken 을 생성한다.

UsernamePasswordAuthenticationToken

  • Authentication 인터페이스를 구현한 구현 클래스
  1. 아직 인증 되지 않은 AuthenticationAuthenticationManager 를 구현한 클래스인 ProviderManager 에게 전달한다.

  2. AuthenticationProvider는 인증을 처리하기 위해 ProviderManager 로 부터 Authenticaion 를 전달받고 UserDetailsService를 이용해 UserDetails를 조회한다.

UserDetailsService

  • UserDetails를 담고있는 컴포넌트

UserDetails

  • 사용자의 Username, Password, 권한 정보를 담고있는 컴포넌트
  1. 사용자 정보를 기반으로UserDetails 를 생성한 후 AuthenticationProvider에게 다시 전달 한다.

  2. PasswordEncoder를 이용해 암호화된 Password와 인증을 위한 Authentication에 포함된 Password가 일치하는지 검증한다.

    • 검증에 성공하면 Authenticaion 을 생성한다.
    • 실패시 Exception 발생 시킨 후 검증을 종료한다.
  3. 인증된 AuthenticationProviderManager 에게 전달하고, 다시 UsernamePasswordAuthenticationFilter 에게 전달한다.

  4. 마지막으로 SecurityContextHolder 를 이용해 SecurityContext에 인증된 Authentication 를 저장한다.

0개의 댓글

관련 채용 정보