본문 바로가기
공부 일지/프로그래밍 언어

[Security] 인증처리 흐름/컴포넌트

by Joshbla 2022. 9. 23.

 

  • 사용자의 로그인 요청을 처리하는 Spring Security Filter는 UsernamePasswordAuthenticationFilter 이다.
  • UsernamePasswordAuthenticationToken은 Authentication 인터페이스를 구현한 구현 클래스이며, 여기서의 Authentication 은 ⭐ 아직 인증이 되지 않은 Authentication을 의미한다.
  • AuthenticationManager는 인증 처리를 총괄하는 매니저 역할을 하는 인터페이스이고, AuthenticationManager를 구현한 구현 클래스가 ProviderManager 이다.
  • UserDetails 는 사용자의 자격을 증명해주는 크리덴셜(Credential) 즉, 데이터베이스 등의 저장소에 저장된 사용자의 Username과 Password, 그리고 사용자의 권한 정보를 포함하고 있는 컴포넌트이다.
  • UserDetails 를 제공하는 컴포넌트가 바로 UserDetailsService 입니다.
  • UserDetailsService 는 데이터베이스 등의 저장소에서 사용자의 크리덴셜(Credential)을 조회하여 AuthenticationProvider 에게 제공한다.
  • UsernamePasswordAuthenticationFilter가 생성하는 Authentication인증을 위해 필요한 사용자의 로그인 정보를 가지고 있지만, ⭐ AuthenticationProvider 가 생성한 Authentication인증에 성공한 사용자의 정보(Principal, Credential, GrantedAuthorities)를 가지고 있다.
  • 인증된 Authentication을 전달 받은 UsernamePasswordAuthenticationFilter는 SecurityContextHolder를 이용해 SecurityContext 에 인증된 Authentication을 저장한다. SecurityContext는 다시 HttpSession 에 저장되어 사용자의 인증 상태를 유지한다.


  • UsernamePasswordAuthenticationFilter 는 클라이언트로부터 전달 받은 Username과 Password를 Spring Security가 인증 프로세스에서 이용할 수 있도록 UsernamePasswordAuthenticationToken 을 생성한다.
  • AbstractAuthenticationProcessingFilter는 HTTP 기반의 인증 요청을 처리하지만 실질적인 인증 시도는 하위 클래스에 맡기고, 인증에 성공하면 인증된 사용자의 정보를 SecurityContext에 저장하는 역할을 한다.
  • Authentication은 Spring Security에서의 인증 자체를 표현하는 인터페이스이다.
  • AuthenticationManager는 이름 그대로 인증 처리를 총괄하는 매니저 역할을 하는 인터페이스이며, 인증을 위한 실질적인 관리는 AuthenticationManager를 구현하는 구현 클래스를 통해 이루어진다.
  • ProviderManager는 이름에서 유추할 수 있듯이 AuthenticationProvider를 관리하고, AuthenticationProvider에게 인증 처리를 위임하는 역할을 한다.
  • AuthenticationProvider는 AuthenticationManager로부터 인증 처리를 위임 받아 실질적인 인증 수행을 담당하는 컴포넌트이다.
  • UserDetails 는 사용자의 자격을 증명해주는 크리덴셜(Credential) 즉, 데이터베이스 등의 저장소에 저장된 사용자의 Username과 Password 그리고 사용자의 권한 정보를 포함하는 컴포넌트이며, AuthenticationProvider 는 UserDetails를 이용해 자격 증명을 수행한다.
  • UserDetailsService는 UserDetails를 로드(load)하는 핵심 인터페이스이다.
  • SecurityContext는 인증된 Authentication 객체를 저장하는 컴포넌트이고, SecurityContextHolder는 SecurityContext를 관리하는 역할을 담당한다.

 

'공부 일지 > 프로그래밍 언어' 카테고리의 다른 글

[Git] Git 기초  (0) 2022.10.05
[Security] JWT  (0) 2022.09.29
[Security] 기본  (0) 2022.09.22
스프링 프레임워크 기본  (0) 2022.08.28
스프링 웹개발 기초 (2)  (0) 2022.08.28