Spring/security

[시큐리티] 스프링 시큐리티 인증 프로세스 구성 요소

라임온조 2023. 3. 10. 10:57

1. 스프링 시큐리티의 인증 프로세스에 포함된 주 구성 요소와 관계

1) 인증 필터

인증 요청을 인증 관리자에 위임하고 응답을 바탕으로 보안 컨텍스트를 구성한다

2) 인증 관리자

인증 공급자를 이용해 인증을 처리한다

3) 인증 공급자(AuthenticationProvider)

  • 인증 논리를 구현한다
    • 사용자 관리 책임을 구현하는 사용자 세부 정보 서비스(UserDetailService)를 인증 논리에 이용한다
    • 암호 관리를 구현하는 암호 인코더(PasswordEncoder)를 인증 논리에 이용한다

4) 보안 컨텍스트

인증 프로세스 후 인증 데이터를 유지한다

2. UserDetailsService

1) 개념

사용자 이름으로 사용자 세부 정보를 검색하는 객체

2) 하는 일

  • 사용자에 관한 세부 정보를 관리 
  • 인증 공급자는 userDetailsService를 이용해 사용자를 찾고 암호를 확인한다

3) 특징

  • 자동으로 구성되는 빈
  • 스프링부트가 제공하는 기본 구현은 애플리케이션 내부 메모리에 기본 자격 증명(사용자 이름, 기본 암호)을 등록하는 일만 한다.
  • UserDetailsService의 기본 구현을 대체할 때는 PasswordEncoder도 지정해야 한다
  • 대부분의 애플리케이션은 요구 사항에 맞게 UserDetailsService를 맞춤 구성한다

3. PasswordEncoder

1) 개념

암호를 암호화 또는 해시하는 방법과 주어진 인코딩된 문자열을 일반 텍스트 암호와 비교하는 방법 지정

2) 하는 일

  • 암호 인코딩
  • 암호가 기존 인코딩과 일치하는지 확인

3) 특징

  •  자동으로 구성되는 빈
  • 대부분의 애플리케이션은 요구 사항에 맞게 PasswordEncoder를 맞춤 구성한다

4. AuthenticationProvider

1) 하는 일

  • 인증 논리를 정의하고 사용자와 암호의 관리를 위임한다

2) 특징

  • AuthenticationProvider의 기본 구현은 UserDetailsService 및 PasswordEncoder에 제공된 기본 구현을 이용