Я использую клиент Feign в своем приложении с Spring Security 5.2, который требует замены привязок API с RestTemplate
на WebClient
. Я настроил свой веб-клиент для использования веб-клиента с OAuth2AuthorizedClientManager
для управления токеном доступа, предоставленным потоком client_credentials
. А теперь я хочу создать RequestInterceptor
Feign для моего клиента Feign, который будет использовать этот WebClient
. Как мне это сделать?
Вот мой WebClientConfiguration
:
@Configuration
public class WebClientConfig {
@Bean
public OAuth2AuthorizedClientManager authorizedClientManager(
ClientRegistrationRepository clientRegistrationRepository,
OAuth2AuthorizedClientService clientService) {
OAuth2AuthorizedClientProvider authorizedClientProvider =
OAuth2AuthorizedClientProviderBuilder.builder()
.refreshToken()
.clientCredentials()
.build();
AuthorizedClientServiceOAuth2AuthorizedClientManager authorizedClientManager =
new AuthorizedClientServiceOAuth2AuthorizedClientManager(
clientRegistrationRepository, clientService);
authorizedClientManager.setAuthorizedClientProvider(authorizedClientProvider);
return authorizedClientManager;
}
@Bean
WebClient azureGraphAPIWebClient(OAuth2AuthorizedClientManager authorizedClientManager) {
ServletOAuth2AuthorizedClientExchangeFilterFunction oauth2Client =
new ServletOAuth2AuthorizedClientExchangeFilterFunction(authorizedClientManager);
oauth2Client.setDefaultClientRegistrationId("registration-id");
return WebClient.builder()
.apply(oauth2Client.oauth2Configuration())
.build();
}
}