본문 바로가기
Backend, Server/Spring Security

[Spring Security] Authentication 알아보기

by ggyongi 2023. 2. 11.
반응형

참고한 글: https://docs.spring.io/spring-security/reference/servlet/authentication/architecture.html

 

Servlet Authentication Architecture :: Spring Security

ProviderManager is the most commonly used implementation of AuthenticationManager. ProviderManager delegates to a List of AuthenticationProvider instances. Each AuthenticationProvider has an opportunity to indicate that authentication should be successful,

docs.spring.io

 

<Authentication Architecture>

자세한 건 위의 공식문서를 읽어보면 되고, 각 컨셉에 대한 빠른 이해를 위해 최대한 간략히 적어볼 예정.

1. SecurityContextHolder

- SecurityContext를 담고 있음

 

2. SecurityContext

 - Authentication obejct 를 포함함.

 

3. Authentication

 - 해당 인터페이스는 2가지 목적을 가짐

 - 첫째, AuthenticationManager의 인풋(유저 인증을 위한 credential 공급을 목적으로)

 - 둘째, 현재 인증된 유저를 나타내기 위해

 

 - principal, credentials, authorities 등을 포함

 - principal: userId, password

 - credentials: often password

 - authorities: grantedAuthoriy -> 해당 유저의 높은 수준의 허가 목록(high level permissions..?), 예를 들어 role과 scope.

 

4. AuthenticationManager

 - SpringSecurity의 필터가 어떻게 인증을 수행하는지 정의하는 API라고 할 수 있다.
 - AuthenticationManager를 호출하는 컨트롤러(즉, 스프링시큐리티 필터)에 의해 Authentication 인스턴스가 SecurityContextHolder에 저장됨.

 - 가장 흔한 구현체는 ProviderManager임.

 

5. ProviderManager

- AuthenticationManager의 가장 흔한 구현체.

- ProviderManager는 인증을 AuthenticationProvider 리스트에 위임함.

6. AuthenticationProvider

 - 다수의 AuthenticationProvider 인스턴스를 ProviderManager에게 주입할 수 있다.

 - 각각의 AuthenticationProvider는 구체적인 타입의 인증을 수행한다.

 - 예를 들어, DaoAuthenticationProvider는 username/password에 기반한 인증을,

 - JwtAuthenticationProvider는 JWT 토큰에 대한 인증을 수행한다.

 

 

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글