We should align (Server|Servlet)OAuth2AuthorizedClientExchangeFilterFunction with OAuth2ClientHttpRequestInterceptor which introduces a ClientRegistrationIdResolver as a flexible strategy for resolving the clientRegistrationId for a given request. For WebClient-based ExchangeFilterFunctions, the interface could be:

@FunctionalInterface
public interface ClientRegistrationIdResolver {

    @Nullable
    String resolve(ClientRequest request);

}

Comment From: sjohnr

Note: When considering ServerOAuth2AuthorizedClientExchangeFilterFunction may need to return Mono<String>:

@FunctionalInterface
public interface ClientRegistrationIdResolver {

    @Nullable
    Mono<String> resolve(ClientRequest request);

}

Related gh-16284.