Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Basic authentication for REST API using spring restTemplate

I am completely new in RestTemplate and basically in the REST APIs also. I want to retrieve some data in my application via Jira REST API, but getting back 401 Unauthorised. Found and article on jira rest api documentation but don't really know how to rewrite this into java as the example uses the command line way with curl. I would appreciate any suggestion or advice how to rewrite:

curl -D- -X GET -H "Authorization: Basic ZnJlZDpmcmVk" -H "Content-Type: application/json" "http://kelpie9:8081/rest/api/2/issue/QA-31" 

into java using spring rest template. Where the ZnJlZDpmcmVk is a base64 encoded string of username:password. Thank you very much.

like image 916
shippi Avatar asked Feb 20 '14 21:02

shippi


People also ask

How do you set basic authentication in RestTemplate?

Now that everything is in place, the RestTemplate will be able to support the Basic Authentication scheme just by adding a BasicAuthorizationInterceptor: restTemplate. getInterceptors(). add( new BasicAuthorizationInterceptor("username", "password"));


1 Answers

Taken from the example on this site, I think this would be the most natural way of doing it, by filling in the header value and passing the header to the template.

This is to fill in the header Authorization:

String plainCreds = "willie:p@ssword"; byte[] plainCredsBytes = plainCreds.getBytes(); byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes); String base64Creds = new String(base64CredsBytes);  HttpHeaders headers = new HttpHeaders(); headers.add("Authorization", "Basic " + base64Creds); 

And this is to pass the header to the REST template:

HttpEntity<String> request = new HttpEntity<String>(headers); ResponseEntity<Account> response = restTemplate.exchange(url, HttpMethod.GET, request, Account.class); Account account = response.getBody(); 
like image 171
Angular University Avatar answered Sep 28 '22 18:09

Angular University