스프링 시큐리티 OAuth2/OAuth 2.0 Client - oauth2Client()

DefaultOAuth2AuthorizedClientManager

webmaster 2023. 1. 29. 15:32
728x90

OAuth2AuthorizedClientManager

OAuth2AuthorizedClientManager

  • OAuth2AuthorizedClient 를 전반적으로 관리하는 인터페이스
  • OAuth2AuthorizedClientProvider 로 OAuth 2.0 클라이언트에 권한 부여
    • Client Credentials Flow
    • Resource Owner Password Flow
    • Refresh Token Flow
  • OAuth2AuthorizedClientService 나 OAuth2AuthorizedClientRepository 에 OAuth2AuthorizedClient 저장을 위임한 후 OAuth2AuthorizedClient 최종 반환
  • 사용자 정의 OAuth2AuthorizationSuccessHandler 및 OAuth2AuthorizationFailureHandler 를 구성하여 성공/실패 처리를 변경할 수 있다.
  • invalid_grant 오류로 인해 권한 부여 시도가 실패하면 이전에 저장된 OAuth2AuthorizedClient가 OAuth2AuthorizedClientRepository 에서 제거된다

특징

특징
구조

  • ClientRegistrationRepository: ClientRegistration 객체를 관리
  • OAuth2AuthorizedClientRepository, OAuth2AuthorizedClientService : OAuth2AuthorizedClient 객체를 관리
  • ClientCredentialsOAuth2AuthorizedClientProvider, PasswordOAuth2AuthorizedClientProvider, RefreshTokenOAuth2AuthorizedClientProvider를 각각 구현한 클래스가 DefaultRefreshTokenResponseClient, DefaultPasswordTokenResponseClient, DefaultClientCredentialsTokenResponseClient이고, 구현한 클래스에서 내부적으로 RestTemplate을 통해 실제 인증을 한다.

TEST

 

728x90