Class OAuth2ClientCredentialsAccessTokenResponseClient

java.lang.Object
com.broadleafcommerce.cartoperation.oauth2.client.endpoint.OAuth2ClientCredentialsAccessTokenResponseClient
All Implemented Interfaces:
org.springframework.security.oauth2.client.endpoint.OAuth2AccessTokenResponseClient<org.springframework.security.oauth2.client.endpoint.OAuth2ClientCredentialsGrantRequest>

public class OAuth2ClientCredentialsAccessTokenResponseClient extends Object implements org.springframework.security.oauth2.client.endpoint.OAuth2AccessTokenResponseClient<org.springframework.security.oauth2.client.endpoint.OAuth2ClientCredentialsGrantRequest>
Alternative to DefaultClientCredentialsTokenResponseClient that uses WebClient and allows for access token response that contain additional non-String parameters.

This is necessary if the access token response contains any non-String properties, as the default implementation DefaultClientCredentialsTokenResponseClient relies on OAuth2AccessTokenResponseHttpMessageConverter which restricts the access token response to a Map where the value type is String instead of Object. This implementation properly allows non-String properties within the access token response.

Since RestTemplate is expected to be later deprecated, this implementation utilizes a WebClient instead for a more consistent experience.

This implementation also takes a lot of inspiration from WebClientReactiveClientCredentialsTokenResponseClient, which is the reactive version of this component. TODO: move this to a broadleaf oauth2 client dependency

Author:
Nick Crum (ncrum)
  • Constructor Details

    • OAuth2ClientCredentialsAccessTokenResponseClient

      public OAuth2ClientCredentialsAccessTokenResponseClient(org.springframework.web.reactive.function.client.WebClient webClient)
  • Method Details

    • getTokenResponse

      public org.springframework.security.oauth2.core.endpoint.OAuth2AccessTokenResponse getTokenResponse(org.springframework.security.oauth2.client.endpoint.OAuth2ClientCredentialsGrantRequest clientCredentialsGrantRequest)
      Specified by:
      getTokenResponse in interface org.springframework.security.oauth2.client.endpoint.OAuth2AccessTokenResponseClient<org.springframework.security.oauth2.client.endpoint.OAuth2ClientCredentialsGrantRequest>