Class 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 https://github.com/BroadleafCommerce/MicroPM/issues/1924

    Author:
    Nick Crum (ncrum)
    • Constructor Detail

      • OAuth2ClientCredentialsAccessTokenResponseClient

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

      • 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>