Class ServerOAuth2AuthorizedClientExchangeFilterFunction

  • All Implemented Interfaces:
    org.springframework.web.reactive.function.client.ExchangeFilterFunction

    public final class ServerOAuth2AuthorizedClientExchangeFilterFunction
    extends java.lang.Object
    implements org.springframework.web.reactive.function.client.ExchangeFilterFunction
    Provides an easy mechanism for using an OAuth2AuthorizedClient to make OAuth2 requests by including the token as a Bearer Token.
    Since:
    5.1
    • Constructor Detail

      • ServerOAuth2AuthorizedClientExchangeFilterFunction

        public ServerOAuth2AuthorizedClientExchangeFilterFunction​(ReactiveOAuth2AuthorizedClientManager authorizedClientManager)
        Constructs a ServerOAuth2AuthorizedClientExchangeFilterFunction using the provided parameters.
        Parameters:
        authorizedClientManager - the ReactiveOAuth2AuthorizedClientManager which manages the authorized client(s)
        Since:
        5.2
      • ServerOAuth2AuthorizedClientExchangeFilterFunction

        public ServerOAuth2AuthorizedClientExchangeFilterFunction​(ReactiveClientRegistrationRepository clientRegistrationRepository,
                                                                  ServerOAuth2AuthorizedClientRepository authorizedClientRepository)
        Constructs a ServerOAuth2AuthorizedClientExchangeFilterFunction using the provided parameters.
        Parameters:
        clientRegistrationRepository - the repository of client registrations
        authorizedClientRepository - the repository of authorized clients
    • Method Detail

      • oauth2AuthorizedClient

        public static java.util.function.Consumer<java.util.Map<java.lang.String,​java.lang.Object>> oauth2AuthorizedClient​(OAuth2AuthorizedClient authorizedClient)
        Modifies the ClientRequest.attributes() to include the OAuth2AuthorizedClient to be used for providing the Bearer Token. Example usage:
         WebClient webClient = WebClient.builder()
            .filter(new ServerOAuth2AuthorizedClientExchangeFilterFunction(authorizedClientManager))
            .build();
         Mono response = webClient
            .get()
            .uri(uri)
            .attributes(oauth2AuthorizedClient(authorizedClient))
            // ...
            .retrieve()
            .bodyToMono(String.class);
         
        An attempt to automatically refresh the token will be made if all of the following are true:
        • A refresh token is present on the OAuth2AuthorizedClient
        • The access token will be expired in setAccessTokenExpiresSkew(Duration)
        • The ReactiveSecurityContextHolder will be used to attempt to save the token. If it is empty, then the principal name on the OAuth2AuthorizedClient will be used to create an Authentication for saving.
        Parameters:
        authorizedClient - the OAuth2AuthorizedClient to use.
        Returns:
        the Consumer to populate the
      • serverWebExchange

        public static java.util.function.Consumer<java.util.Map<java.lang.String,​java.lang.Object>> serverWebExchange​(org.springframework.web.server.ServerWebExchange serverWebExchange)
        Modifies the ClientRequest.attributes() to include the ServerWebExchange to be used for providing the Bearer Token. Example usage:
         WebClient webClient = WebClient.builder()
            .filter(new ServerOAuth2AuthorizedClientExchangeFilterFunction(authorizedClientManager))
            .build();
         Mono response = webClient
            .get()
            .uri(uri)
            .attributes(serverWebExchange(serverWebExchange))
            // ...
            .retrieve()
            .bodyToMono(String.class);
         
        Parameters:
        serverWebExchange - the ServerWebExchange to use
        Returns:
        the Consumer to populate the client request attributes
      • setDefaultOAuth2AuthorizedClient

        public void setDefaultOAuth2AuthorizedClient​(boolean defaultOAuth2AuthorizedClient)
        If true, a default OAuth2AuthorizedClient can be discovered from the current Authentication. It is recommended to be cautious with this feature since all HTTP requests will receive the access token if it can be resolved from the current Authentication.
        Parameters:
        defaultOAuth2AuthorizedClient - true if a default OAuth2AuthorizedClient should be used, else false. Default is false.
      • setDefaultClientRegistrationId

        public void setDefaultClientRegistrationId​(java.lang.String clientRegistrationId)
        If set, will be used as the default ClientRegistration.getRegistrationId(). It is recommended to be cautious with this feature since all HTTP requests will receive the access token.
        Parameters:
        clientRegistrationId - the id to use
      • filter

        public reactor.core.publisher.Mono<org.springframework.web.reactive.function.client.ClientResponse> filter​(org.springframework.web.reactive.function.client.ClientRequest request,
                                                                                                                   org.springframework.web.reactive.function.client.ExchangeFunction next)
        Specified by:
        filter in interface org.springframework.web.reactive.function.client.ExchangeFilterFunction