Как создать Feign Oauth2RequestIntercetor с помощью WebClient с Spring Security 5.2.x? - PullRequest
0 голосов
/ 29 мая 2020

Я использую клиент 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();
    }
}
...