我有一组用户证书,我想使用相应的用户证书对用户进行身份验证。
我配置服务器以启用用户身份验证。它从浏览器工作正常。如果有多个用户证书,它会提示我选择需要使用的证书。 我的问题是,我怎么能用java做到这一点?我正在使用RestTemplate与服务器进行通信。
如果是单用户证书,我可以将其添加到java密钥库并使用它。如何将特定用户证书用于特定的休息呼叫?
答案 0 :(得分:1)
这里使用的标准术语是"客户端证书",所以你可能会有更多的运气谷歌搜索,例如" RestTemplate客户端证书"。
来自another Stack Overflow回复的一些复制/粘贴代码:
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(new FileInputStream(new File("keystore.jks")),
"secret".toCharArray());
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(
new SSLContextBuilder()
.loadTrustMaterial(null, new TrustSelfSignedStrategy())
.loadKeyMaterial(keyStore, "password".toCharArray()).build());
HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).build();
ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(
httpClient);
RestTemplate restTemplate = new RestTemplate(requestFactory);
ResponseEntity<String> response = restTemplate.getForEntity(
"https://localhost:8443", String.class);