Spring Security OAuth2 Client 라이브러리 사용 시 access token 을 갱신하는 부분에 대한 언급이 없어 찾고 찾다가 내부적으로 갱신된다는 부분을 찾아서 혹시 헤메고 있는 다른분이 있으시다면 도움이 되고자 정리해본다 !
권한 부여 타입이 authorization_code, password 일 때만 액세스 토크 응답에 OAuth2RefreshToken 이 들어있다.
만약 OAuth2AuthorizedClient.getRefreshToken() 을 사용할 수 있고 OAuth2AuthorizedClient.getAccessToken() 이 만료됬다면 RefreshTokenOAuth2AuthorizedClientProvider 가 토큰을 자동으로 갱신한다.
레퍼런스 페이지에서 위와 같이 정리되어있지만.. 눈에 보이지 않아 확신할 수 없었기 때문에 디버깅을 통해 확인해보았다
1. OAuth2ClientConfiguration.class
OAuth2ClientConfiguration.class 에서 DefaultOAuth2AuthorizedClientManager 객체를 세팅한다.
2. DefaultOAuth2AuthorizedClientManager.class
DefaultOAuth2AuthorizedClientManager.class 에서 변수로 OAuth2AuthorizedClientProviderBuilder 를 세팅한다.
3. OAuth2AuthorizedClientProviderBuilder.class
refreshToken 함수에서 RefreshTokenOAuth2AuthorizedClientProvider 를 세팅한다
4. RefreshTokenOAuth2AuthorizedClientProvider.class
authorize 함수를 보면 refresh token이 null이 아니고, access token이 만료되었을 때
다시 토큰을 발급받는 부분을 찾을 수 있었다
reference : https://docs.spring.io/spring-security/site/docs/5.3.2.RELEASE/reference/html5/#refreshing-an-access-token
'Spring' 카테고리의 다른 글
[Spring] MVC pattern & Front controller (0) | 2023.05.13 |
---|---|
[Spring] 정적 리소스 미출력 오류 해결 (0) | 2022.03.26 |
[Spring] Spring Boot + Spring Security OAuth2 Client + Kakao Login - 1 (0) | 2022.03.05 |
[Spring] Spring 이란? (0) | 2021.08.29 |
[Spring] JUnit Test 시 로그 안남는 문제 해결 (0) | 2021.08.28 |