javaspringresttemplatejira-rest-api

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.


Solution

  • 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();