본문 바로가기

Spring🍃/Spring Security🛡️

정수원의 Spring Security Oauth2 (2) : Spring Security 초기화 과정 이해

728x90

AuthenticationEntryPoint 이해

자동설정에 의한 초기화 프로세스

FormLoginConfigurer - ExceptionHandlingConfigurer - defaultEntryPointMappings.put - HttpBasicConfigurer - defaultEntryPointMappings.put

 

*FormLogin

1) FormLoginConfigurer -> ExceptionHandlingConfigurer 

- 폼 로그인에서 예외 발생

- ExceptionHandlingConfigurer에서 AuthenticationEntryPoint 구현체 생성

-> LoginUrlAuthenticationEntryPoint

 

2) ExceptionHandlingConfigurer -> defaultEntryPointMappings.put

- LoginUrlAuthenticationEntryPoint를 defaultEntryPointMappings에 put

 

*HttpBasic

3) HttpBasicConfigurer -> defaultEntryPointMappings.put

- 1, 2번과 같은 로직 흐름이지만, 구현체가 다르다

-> BasicAuthenticationEntryPoint

- BasicAuthenticationEntryPoint defaultEntryPointMappings에 put

 

* CustomEntryPoint를 구현할 경우, 위의 프로세스가 아닌 CutomAuthenticationEntryPoint 구현체가 생성되어 가장 우선 처리된다

위의 다양한 경로를 통해 생성된 최종 EntryPoint인 AuthenticationEntryPoint 구현체는 ExceptionTransactionFilter에 저장된다.

 

기본 프로세스에서

1) CustomEntryPoint가 있는지 확인

2) 없는 경우

2-1) defalutEntryPointMappings가 비어있는지 확인 -> 비어있을 시, 403 에러 반환

2-2) defalutEntryPointMappings의 크기가 1인지 확인

-> 하나 이상일 경우, DelegatingAuthenticationEntryPoint( defaultEntryPointMappings )를 통해 하나의 AuthenticationEntryPoint 구현체를 선정

2-3) 최종 AuthenticationEntryPoint를 ExceptionTransactionFilter에 저장

728x90