Мне нужно использовать API, защищенный OAuth2 с WebClient. Я настроил OAuth2AuthorizedClientManager
для управления токеном доступа и обновил sh, когда это необходимо.
Однако я столкнулся с некоторой проблемой, java.net.UnknownHostException
. Между моим Приложением и ресурсом токена OAuth2 имеется прокси-сервер, и я не знаю, как его настроить.
Что я пробовал:
- Проверьте его в другой среде без прокси и это работа. Моя
OAuth2AuthorizedClientManager
конфигурация правильная. System.setProperty()
, не решение, у меня есть несколько прокси для управления.
возможно, я неправильно понимаю некоторые понятия OAuth2
Вот код:
application.properties
spring.security.oauth2.client.registration.client.client-id=clientId
spring.security.oauth2.client.registration.client.authorization-grant-type=client_credentials
spring.security.oauth2.client.registration.client.client-secret=clientSecret
spring.security.oauth2.client.provider.client.token-uri=URI/oauth2/token
WebClientConfig
@Bean
public OAuth2AuthorizedClientManager authorizedClientManager(
ClientRegistrationRepository clientRegistrationRepository,
OAuth2AuthorizedClientService clientService)
{
OAuth2AuthorizedClientProvider authorizedClientProvider =
OAuth2AuthorizedClientProviderBuilder.builder()
.clientCredentials()
.build();
AuthorizedClientServiceOAuth2AuthorizedClientManager authorizedClientManager =
new AuthorizedClientServiceOAuth2AuthorizedClientManager(
clientRegistrationRepository, clientService);
authorizedClientManager.setAuthorizedClientProvider(authorizedClientProvider);
return authorizedClientManager;
}
@Bean
WebClient webClient(OAuth2AuthorizedClientManager authorizedClientManager) {
ServletOAuth2AuthorizedClientExchangeFilterFunction oauth2Client =
new ServletOAuth2AuthorizedClientExchangeFilterFunction(authorizedClientManager);
oauth2Client.setDefaultClientRegistrationId("client");
return WebClient.builder()
.baseUrl("URI")
.clientConnector(getReactorClientHttpConnector(url))
.apply(oauth2Client.oauth2Configuration())
.build();
}
Мой тест
@Autowired
WebClient webClient;
public void test() {
RequestHeadersSpec<?> request = webClient.get()
.uri("/heartbeats");
}
Ошибка
org.springframework.security.oauth2.core.OAuth2AuthorizationException: [invalid_token_response] An error occurred while attempting to retrieve the OAuth 2.0 Access Token Response: I/O error on POST request for "URI/oauth2/token": URI; nested exception is java.net.UnknownHostException: URI
У меня вопрос Как настроить прокси для OAuth2AuthorizedClientManager
?
Пожалуйста, не стесняйтесь просить разъяснений.
Любая помощь будет оценена. Спасибо