VOOZH about

URL: https://www.javacodegeeks.com/2016/02/spring-cloud-ribbon-making-secured-call.html

⇱ Spring Cloud Ribbon - Making a secured call - Java Code Geeks


Something simple, but I struggled with this recently – I had to make a Netflix Ribbon based client call to a secured remote service. It turns out there are two ways to do this using Netflix Ribbon, I will demonstrate this through Spring Cloud’s excellent support for Ribbon library.

In two previous blog posts I have touched on Spring Cloud Ribbon basics and some advanced customizations, continuing with the same example, assuming that I have a configuration along these lines:

sampleservice:
 ribbon:
 listOfServers: someserver:80
 ReadTimeout: 5000
 MaxAutoRetries: 2

Given this configuration, I can call the service this way:

public class RestTemplateSample {
 
 @Autowired
 private RestTemplate restTemplate;
 
 @Override
 public MessageAcknowledgement sendMessage(Message message) {
 String pongServiceUrl = "http://sampleservice/message";
 HttpEntity<Message> requestEntity = new HttpEntity<>(message);
 ResponseEntity<MessageAcknowledgement> response = this.restTemplate.exchange(pongServiceUrl, HttpMethod.POST, requestEntity, MessageAcknowledgement.class, Maps.newHashMap());
 return response.getBody();
 }
 
}

So now if the remote service were secured, the first approach and likely the preferred way is actually quite simple, just add an additional configuration to the “named” client to indicate that the remote service is secure, note that the port also has to be appropriately specified.

sampleservice:
 ribbon:
 listOfServers: someserver:443
 ReadTimeout: 5000
 MaxAutoRetries: 2
 IsSecure: true

The second approach that also works is to simply change the url to indicate that you are calling a https endpoint, this time the “IsSecure” configuration is not required:

public class RestTemplateSample {
 
 @Autowired
 private RestTemplate restTemplate;
 
 @Override
 public MessageAcknowledgement sendMessage(Message message) {
 String pongServiceUrl = "https://sampleservice/message";
 HttpEntity<Message> requestEntity = new HttpEntity<>(message);
 ResponseEntity<MessageAcknowledgement> response = this.restTemplate.exchange(pongServiceUrl, HttpMethod.POST, requestEntity, MessageAcknowledgement.class, Maps.newHashMap());
 return response.getBody();
 }
 
}
Reference: Spring Cloud Ribbon – Making a secured call from our JCG partner Biju Kunjummen at the all and sundry blog.
Do you want to know how to develop your skillset to become a Java Rockstar?
Subscribe to our newsletter to start Rocking right now!
To get you started we give you our best selling eBooks for FREE!
1. JPA Mini Book
2. JVM Troubleshooting Guide
3. JUnit Tutorial for Unit Testing
4. Java Annotations Tutorial
5. Java Interview Questions
6. Spring Interview Questions
7. Android UI Design
and many more ....
I agree to the Terms and Privacy Policy

Thank you!

We will contact you soon.

👁 Photo of Biju Kunjummen
Biju Kunjummen
February 1st, 2016Last Updated: January 31st, 2016
0 113 1 minute read
Subscribe

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Oldest
Newest Most Voted
Back to top button
Close
wpDiscuz