Что-то простое, но я недавно боролся с этим — мне нужно было позвонить клиенту Netflix Ribbon на защищенный удаленный сервис. Оказывается, есть два способа сделать это с помощью ленты Netflix, я продемонстрирую это через отличную поддержку Spring Cloud для библиотеки лент.
В двух предыдущих публикациях в блоге я затронул основы Spring Cloud Ribbon и некоторые расширенные настройки , продолжая этот же пример, предполагая, что у меня есть конфигурация по этим направлениям:
1
2
3
4
5
|
sampleservice: ribbon: listOfServers: someserver: 80 ReadTimeout: 5000 MaxAutoRetries: 2 |
Учитывая эту конфигурацию, я могу вызвать сервис следующим образом:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
public class RestTemplateSample { @Autowired private RestTemplate restTemplate; @Override public MessageAcknowledgement sendMessage(Message message) { HttpEntity<Message> requestEntity = new HttpEntity<>(message); ResponseEntity<MessageAcknowledgement> response = this .restTemplate.exchange(pongServiceUrl, HttpMethod.POST, requestEntity, MessageAcknowledgement. class , Maps.newHashMap()); return response.getBody(); } } |
Так что теперь, если удаленная служба защищена, первый подход и, вероятно, предпочтительный способ на самом деле довольно прост, просто добавьте дополнительную конфигурацию к «именованному» клиенту, чтобы указать, что удаленная служба безопасна, обратите внимание, что порт также должен быть правильно указано.
1
2
3
4
5
6
|
sampleservice: ribbon: listOfServers: someserver: 443 ReadTimeout: 5000 MaxAutoRetries: 2 IsSecure: true |
Второй подход, который также работает, состоит в том, чтобы просто изменить URL, чтобы указать, что вы вызываете конечную точку https, на этот раз конфигурация IsSecure не требуется:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
public class RestTemplateSample { @Autowired private RestTemplate restTemplate; @Override public MessageAcknowledgement sendMessage(Message message) { HttpEntity<Message> requestEntity = new HttpEntity<>(message); ResponseEntity<MessageAcknowledgement> response = this .restTemplate.exchange(pongServiceUrl, HttpMethod.POST, requestEntity, MessageAcknowledgement. class , Maps.newHashMap()); return response.getBody(); } } |
Ссылка: | Spring Cloud Ribbon — Безопасный звонок от нашего партнера по JCG Биджу Кунджуммена в блоге all and sundry. |