[Spring Security] Authentication Mechanism

spring_security

Authentication #

auth-mech

인증(Authentication)은 인증된 결과만 저장하는것이 아니고, 인증하기 위한 정보인증받기 위한 정보가 동시에 들어있다.
왜냐하면 인증을 제공해줄 제공자(Authentication Provider)가 어떤 인증에 대해서 허가를 내줄 것인지 판단하기 위해서는, 직접 입력된 인증을 보고, 허가된 인증을 내주는 방식이기 때문이다.

그래서 AuthenticationProvider은 처리가능한 Auth에 대해 알려주는 support 메소드를 지원하고,
authenticate() 에서 Auth를 입력값과 동시에 출력값으로도 사용한다.

Auth를 구현한 객체들은 일반적으로 Token이라는 객체로 구현된다. 그래서 Auth의 구현체를 인증 토큰이라고 부른다.

Auth 객체는 SecurityContextHolder를 통하여 세션이 있건 없건 언제든 접근할 수 있도록 필터체인에서 보장해준다.


AuthenticationProvider #

authProvider

인증 제공자(AuthenticationProvider)는 기본적으로 Auth를 받아서 인증하고, 인증된 결과를 다시 Auth 객체로 전달한다.

그런데 인증 제공자는 어떤 인증에 대해서 도장을 찍어줄지 AuthenticationManager에게 알려줘야하기때문에 support() 라는 메소드를 제공한다. 인증 대상과 방식이 다양할 수 있기 때문에 인증 제공자도 여러가지 올 수 있다.


AuthenticationManager #

authManager