728x90
OAuth2AuthorizationRequestRedirectFilter

-
클라이언트는 사용자의 브라우저를 통해 인가 서버의 권한 부여 엔드포인트로 리다이렉션하여 권한 코드 부여 흐름을 시작한다.
-
요청 매핑 Url
-
AuthorizationRequestMatcher : /oauth2/authorization/{registrationId}*
-
AuthorizationEndpointConfig.authorizationRequestBaseUri 를 통해 재정의될 수 있다
-
DefaultOAuth2AuthorizationRequestResolver

- 웹 요청에 대하여 OAuth2AuthorizationRequest 객체를 최종 완성한다
- /oauth2/authorization/{registrationId}와 일치하는지 확인해서 일치하면 registrationId를 추출하고 이를 사용해서 ClientRegistration을 가져와 OAuth2AuthorizationRequest 를 빌드한다.
OAuth2AuthorizationRequest

-
토큰 엔드포인트 요청 파라미터를 담은 객체로서 인가 응답을 연계하고 검증할 때 사용한다
OAuth2AuthorizationRequestRepository
- 인가 요청을 시작한 시점부터 인가 요청을 받는 시점까지 (리다이렉트) OAuth2AuthorizationRequest 를 유지해 준다
Code를 받아오고 리다이렉트 되는 과정

- Request를 보낸다 -> oauth2/authorization/{registrationId}
- OAuth2AuthorizationRequestRedirectFilter 가 요청을 받게 되고 내부적으로 DefaultOAuth2AuthorizationRequestResolver를 사용해 처리한다.
- /oauth2/authorization/{registrationId} RequestMatcher를 이용하여, request 값과 비교하며, 일치하면 진행하고 실패 시 진행하지 않는다.
- 일치할 경우, /login/oauth2/code/{registrationId}를 통해 OAuth2AuthorizationRequest 객체를 만들고 이를HttpSessionOAuth2AuthorizationRequestRepository에 저장한다.
-
인가서버로부터 리다이렉트 된 후 authorizationRequest 객체를 다시 참조하기 위함
-
세션을 사용하지 않을 경우 쿠키에 저장해서 참조하도록 OAuth2AuthorizationRequestRepository 를 재정의 할 수 있다
- 해당 값들을 통해 결국 sendRedirect 과정을 거쳐 리다이렉트 하게 된다.
-
- 일치하지 않을 경우, OAuth2AuthorizationCodeGrantFilter에서 code와 state 값이 있는지를 확인하고, 부정확하면, FilterSecurityInterceptor에서 ExceptionTranslationFilter에서 등록된 LoginUrlAuthenticationEntryPoint를 호출하고 AuthenticationEntryPoint 에 설정된 Url로 이동한다 -> 다시 인증을 받도록 유도한다.
- Authorization Code 방식일 때만 이렇게 동작한다
728x90
'스프링 시큐리티 OAuth2 > OAuth2LoginConfigurer 초기화 이해' 카테고리의 다른 글
| OAuth2 로그인 구현 - UserInfo 엔드포인트 요청하기 (0) | 2023.01.22 |
|---|---|
| OAuth2 로그인 구현 - Oauth 2.0 User 모델 소개 (0) | 2023.01.17 |
| OAuth2 로그인 구현 - Access Token 교환하기 (0) | 2023.01.17 |
| OAuth2 로그인 구현 - OAuth 2.0 Login Page 생성 (0) | 2023.01.16 |
| OAuth2LoginConfigurer 초기화 이해 (0) | 2023.01.16 |