Невозможно использовать @LoadBalanced с OAuth2RestTemplate, настроенным на ClientCredentials - PullRequest
0 голосов
/ 23 мая 2018

Я хочу использовать поток OAuth2 ClientCredentials для межсервисной связи между двумя серверами ресурсов.Все работает нормально, за исключением того, что я не могу использовать имя службы (функция балансировки нагрузки ленты) вместо имени хоста в моих вызовах OAuth2RestTemplate на удаленный сервер ресурсов.

Один из моих серверов ресурсов (который вызывает другой сервер ресурсов) имеетнижеприведенная конфигурация:

Spring Boot 1.5.13
Spring Cloud Edgware.SR3

build.gradle содержит записи для eureka и лентыимя службы, т.е. http://notification-service вместо действительного имени хоста и порта удаленного сервера ресурсов.Если я использую фактическое имя хоста + порт, то все работает нормально, но я не хочу, чтобы мой единственный ресурс знал хост / пост другого сервера ресурсов.

Исключение:

Caused by: java.net.UnknownHostException: notification-service 

У меня естьнесколько вопросов:

  1. Если мой RestTemplate помечен @LoadBalanced, то все работает нормально.Поддерживает ли OAuth2RestTemplate эту аннотацию и можем ли мы использовать имя службы вместо имени хоста?Если да, то любая ссылка или документация приветствуются.
  2. Является ли хорошей идеей использовать учетные данные клиента oauth2 для межсервисной безопасности между двумя серверами ресурсов?Я не вижу образцы для того же в документации?

1 Ответ

0 голосов
/ 22 ноября 2018

@LoadBalanced RestTemplate работает, когда мы используем RestTemplateCustomizer для настройки вновь созданного OAuth2RestTemplate, как показано в приведенном ниже коде:

@Bean(name = "MyOAuthRestTemplate")
@LoadBalanced
public OAuth2RestOperations restTemplate(RestTemplateCustomizer customizer, ClientCredentialsResourceDetails oauth2ClientCredentialsResourceDetails) {
    OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(oauth2ClientCredentialsResourceDetails);
    customizer.customize(restTemplate);
    return restTemplate;
}

Использование имени службы вместо фактического имени хоста прекрасно работает с использованием этого RestTemplate.

...