如何使用webflux在spring boot webclient上添加多个客户端凭据

ep6jt1vc  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(283)

目前我的设置如下。

@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 ==
}

我需要添加多个客户端凭据有没有办法不创建多个reactiveclientregistrationrepositorybean和webclientbean?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题