使用 spring restTemplate 的 REST API 的基本身份验证

2022-08-31 09:34:13

我在 RestTemplate 中是全新的,基本上在 REST API 中也是全新的。我想通过 Jira REST API 在我的应用程序中检索一些数据,但未经授权返回 401。找到和文章关于 jira 休息 api 文档,但真的不知道如何将其重写为 java,因为该示例使用命令行方式与 curl。我将不胜感激如何重写的任何建议或建议:

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

使用弹簧休息模板进入java。其中 ZnJlZDpmcmVk 是 username:password 的 base64 编码字符串。谢谢。


答案 1

这个网站上的例子来看,我认为这将是最自然的方式,通过填写标题值并将标题传递给模板。

这是为了填写标题: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);

这是为了将标头传递给 REST 模板:

HttpEntity<String> request = new HttpEntity<String>(headers);
ResponseEntity<Account> response = restTemplate.exchange(url, HttpMethod.GET, request, Account.class);
Account account = response.getBody();

答案 2

您可以使用 spring-boot RestTemplateBuilder

@Bean
RestOperations rest(RestTemplateBuilder restTemplateBuilder) {
    return restTemplateBuilder.basicAuthentication("user", "password").build();
}

查看文档

(在SB 2.1.0之前,它是#basicAuthorization)


推荐