【发布时间】:2021-07-16 18:04:39
【问题描述】:
我目前在我的应用程序中仅使用一个 OAuth 客户端 ID。令牌将通过 WebClient 发布请求使用。
spring.security.oauth2.client.registration.ec.client-id=xxx
spring.security.oauth2.client.registration.ec.client-secret=xxx
spring.security.oauth2.client.registration.ec.scope=xx
spring.security.oauth2.client.registration.ec.authorization-grant-type=client_credentials
spring.security.oauth2.client.provider.ec.token-uri=https://xxx
配置:
@Autowired
public ClientRegistrationRepository clientRegistrationRepository;
@Bean
public WebClient webClient(ClientRegistrationRepository clientRegistrationRepository, OAuth2AuthorizedClientService authorizedClientService) {
AuthorizedClientServiceOAuth2AuthorizedClientManager manager = new AuthorizedClientServiceOAuth2AuthorizedClientManager(clientRegistrationRepository, authorizedClientService);
manager.setAuthorizedClientProvider(new DelegatingOAuth2AuthorizedClientProvider(
new RefreshTokenOAuth2AuthorizedClientProvider(),
new ClientCredentialsOAuth2AuthorizedClientProvider()));
ServletOAuth2AuthorizedClientExchangeFilterFunction oauth2 = new ServletOAuth2AuthorizedClientExchangeFilterFunction(manager);
oauth2.setDefaultClientRegistrationId("ec");
return WebClient.builder()
.filter(oauth2)
//.filter(logRequest())
.filter(handleResponseError())
.apply(oauth2.oauth2Configuration())
.build();
}
现在我需要添加另一个 OAuth 客户端 ID,它将使用相同的 token-uri 和授权类型。像这样的……
spring.security.oauth2.client.registration.ec1.client-id=xxx1
spring.security.oauth2.client.registration.ec1.client-secret=xxx1
spring.security.oauth2.client.registration.ec1.scope=xxx1
如何修改配置以支持多个 OAuth 客户端,以便为每个 WebClient 提供必要的客户端 ID?
谢谢
【问题讨论】:
标签: spring-boot webclient spring-security-oauth2 spring-oauth2