【发布时间】:2021-01-24 10:57:04
【问题描述】:
所以我目前正在开发一个 Spring Boot MS,它需要连接到实现了 OAuth 2.0 的外部 API。
API Store 使用称为客户端证书的授权类型的自定义版本。
此授权类型使用相互 SSL 和应用程序级别凭据的组合。
它需要两个身份因素:
- 身份因素 1 - 相互 SSL:由我创建的证书,由 API 商店所有者签名
- 身份因素 2 - 应用程序级别凭据:{consumerKey:consumerSecret}
获取这个token的curl命令是:
curl -k -d "grant_type=client_cert" --basic -u "{consumer key}:{consumer secret}" -H "Content-Type: application/x-www-form-urlencoded" --cert {Certificate Pem} https://api.examplestore.com/token
如何将其转换为我的 Spring Boot 应用程序?
我目前已经编写了这段代码,但我认为我还差得很远。
public void TokenRequest() {
ResponseEntity<String> response = null;
RestTemplate restTemplate = new RestTemplate();
String credentials = String.format("%s:%s", consumerKey, consumerSecret);
String encodedCredentials = new String(Base64.getEncoder().encodeToString(credentials.getBytes()));
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
//headers.setCertificate??
headers.add("Authorization", "Basic " + encodedCredentials);
HttpEntity<String> request = new HttpEntity<String>(headers);
response = restTemplate.exchange(tokenUrl, HttpMethod.POST, request, String.class);
}
欢迎任何帮助。谢谢你:)
【问题讨论】:
标签: java spring-boot certificate httprequest token