DDunDDang
DD's Coding
DDunDDang
전체 방문자
오늘
어제
  • 분류 전체보기 (16)
    • 코드스테이츠_43기 (1)
    • 복습 (11)
      • Java (0)
      • 자료구조, 알고리즘 (1)
      • Spring (2)
      • MYSQL (1)
      • 개발 일지 (6)
      • 배포 (1)
    • 알고리즘 (3)
      • Baekjoon (2)
      • 추가 개념 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.
DDunDDang

DD's Coding

Security 인증절차의 전체적인 흐름
복습/Spring

Security 인증절차의 전체적인 흐름

2023. 3. 16. 16:38

UsernamePasswordAuthentication에서 제공한 Username과 Password를 이용해 만든 Authentication은 인증을 위해 만든 것이므로 당연히 인증이 안되어 있다.

->  인증 절차를 거쳐야 한다.

 

UsernamePasswordAuthenticationFilter

AbstractAuthenticationProceccingFilter를 상속

Filter의 역할을 하기위해서는 doFilter() 메서드가 존재해야 하지만, UsernamePasswordAuthentication에 존재하지 않고, AbstractAuthenticationProcessingFilter 클래스에 존재한다.

 

AbstractAuthenticationProcessingFilter

Spring Security에서 제공하는 Filter 중 하나

 

UsernamePasswordAuthenticationToken

AbstractAuthenticationToken 추상 클래스를 상속하는 확장 클래스

+ Authentication 인터페이스를 구현하는 구현 클래스

인증 전 -> Username, Password만 있는 Authentication 생성

인증 후 -> Username, Password, Collection<Granted Authority(권한)>가 포함된 Authentication 생성

 

Authentication

Spring Security에서 인증 자체를 표현하는 인터페이스

Principal 인터페이스와, Serializable 인터페이스를 상속

 

AuthenticationManager

Filter는 AuthenticationManager를 통해 느슨한 결합을 유지하고 있다.

 

ProviderManager

AuthenticationManaber의 구현체. 

ProviderManager만 구현을 할 수 있는 것은 아니다. 하지만 Spring Security에서 AuthenticationManger의 구현체는 일반적으로 ProviderManager를 가리킨다.

 

AuthenticationProvider

AuthenticationManager로부터 인증 처리를 위임받아 처리하는 컴포넌트

Username/Password 기반의 인증 처리는 DaoAuthenticationProvider가 담당

UserDetails를 이용해 자격증명을 수행

 

AbstractUserDetailsAuthenticationProvider를 상속한 확장 클래스

 

AbstractUserDetialsAuthenticationProvider

Authentication 인터페이스의 구현 클래스

이 클래스의 authenticate() 메서드로부터 실질적인 인증절차가 시작된다.

 

순서

1. AbstractUserDetailsAuthenticationProvider의 authenticate() 메서드 호출

2. DaoAuthenticationProvider의 retrieveUser() 호출

3. DaoAuthenticationProvider의 additionalAuthenticationChecks() 메서드 호출

4. DaoAuthenticationProvider의 createSuccessAuthentication() 메서드 호출

5. AbstractUserDetailsAuthenticationProvider의 createSuccessAuthentication() 메서드 호출

6. 인증된 Authentication을 ProviderManager에 리턴

 

UserDetails

Username과 자격을 증명하는 Credential, 사용자의 권한 정보를 포함하는 컴포넌트

 

UserDetailsService

UserDetails를 로드하는 인터페이스

 

SecurityContext

Authentication 객체를 저장하는 컴포넌트

 

SecurityContextHolder

SecurityContext를 관리하는 역할

 

Spring Security는 SecurityContextHolder에 의해 SecrityContext에 값이 채워져 있다면 인증된 사용자로 간주

'복습 > Spring' 카테고리의 다른 글

Security 권한 부여 처리 흐름  (0) 2023.03.17
    '복습/Spring' 카테고리의 다른 글
    • Security 권한 부여 처리 흐름
    DDunDDang
    DDunDDang

    티스토리툴바