2

Currently my setup as following.

@Configuration
public class Oauth2WebClientConfig {

    private final Environment env;

    @Autowired
    public Oauth2WebClientConfig(Environment env) {
        this.env = env;
    }

    // == Oauth2 Configuration ==
    @Bean
    ReactiveClientRegistrationRepository clientRegistration() {
        ClientRegistration clientRegistration = ClientRegistration
                .withRegistrationId("custom")
                .tokenUri(env.getProperty("accessTokenUri"))
                .clientId(env.getProperty("clientID"))
                .clientSecret(env.getProperty("clientSecret"))
                .authorizationGrantType(AuthorizationGrantType.CLIENT_CREDENTIALS)
                .scope(env.getProperty("scope"))
                .build();
        return new InMemoryReactiveClientRegistrationRepository(clientRegistration);
    }

    @Bean
    ReactiveOAuth2AuthorizedClientService authorizedClientService() {
        return new InMemoryReactiveOAuth2AuthorizedClientService(clientRegistration());
    }
    // == Oauth2 Configuration ==

    // == WebFlux Configuration ==
    @Bean
    WebClient webClient(ReactiveClientRegistrationRepository clientRegistrations, ReactiveOAuth2AuthorizedClientService authorizedClientService) {
        ServerOAuth2AuthorizedClientExchangeFilterFunction oauth = new ServerOAuth2AuthorizedClientExchangeFilterFunction(
                new AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager(clientRegistrations, authorizedClientService));
        oauth.setDefaultClientRegistrationId("custom");
        return WebClient.builder()
                .filter(oauth)
                .build();
    }


    // == WebFlux Configuration ==
}

I need to add multiple client credentials is there a way to do it without creating multiple ReactiveClientRegistrationRepository bean & WebClient bean?

praneeth
  • 203
  • 1
  • 4
  • 14
  • The ```InMemoryReactiveClientRegistrationRepository``` constructor can be parameterized with one or many ```ClientRegistrytion```s. As far as I know you then still need to have multiple ```WebClient``` beans. – Henrik Sachse Jun 24 '22 at 11:42

0 Answers0