Java Spring Boot oauth2配置中的多个客户端凭据-动态使用
我在spring boot中的应用程序使用oauth2连接到另一个rest服务。我想为其他客户端添加新凭据 目前,我的配置如下所示:Java Spring Boot oauth2配置中的多个客户端凭据-动态使用,java,spring,spring-boot,spring-security-oauth2,Java,Spring,Spring Boot,Spring Security Oauth2,我在spring boot中的应用程序使用oauth2连接到另一个rest服务。我想为其他客户端添加新凭据 目前,我的配置如下所示: @Bean ReactiveClientRegistrationRepository getRegistration( @Value("${spring.security.oauth2.client.provider.my-client1.token-uri:https://token.url/token}") Stri
@Bean
ReactiveClientRegistrationRepository getRegistration(
@Value("${spring.security.oauth2.client.provider.my-client1.token-uri:https://token.url/token}") String tokenUri,
@Value("${spring.security.oauth2.client.registration.my-client1.client-id:werwewewewf}") String clientId,
@Value("${spring.security.oauth2.client.registration.my-client1.client-secret:erwerwerwerwe}") String clientSecret,
@Value("${spring.security.oauth2.client.registration.my-client1.scopes:openid}") String scope
) {
ClientRegistration registration = ClientRegistration
.withRegistrationId("my-client1")
.tokenUri(tokenUri)
.clientId(clientId)
.clientSecret(clientSecret)
.authorizationGrantType(AuthorizationGrantType.CLIENT_CREDENTIALS)
.scope(scope)
.build();
return new InMemoryReactiveClientRegistrationRepository(registration);
}
我可以看到InMemoryReactiveClientRegistration存储库可以进行多个ClientRegistration。我的猜测是,我可以通过这种方式添加多个客户端
但是,我希望在应用程序运行时动态使用它们。目前,我可以为每个WebClient bean设置一个客户端:
@Bean(name = "my-webclient")
public WebClient webClient(@Qualifier("getRegistration") ReactiveClientRegistrationRepository clientRegistrations) {
ServerOAuth2AuthorizedClientExchangeFilterFunction oauth = new ServerOAuth2AuthorizedClientExchangeFilterFunction(
clientRegistrations, new UnAuthenticatedServerOAuth2AuthorizedClientRepository());
oauth.setDefaultClientRegistrationId("my-client1");
return WebClient.builder()
.filter(oauth)
.build();
}
我想验证每个客户机请求它是什么类型的客户机,并为此客户机使用适当的oauth2凭据。有什么好办法可以做到这一点吗