我在Tomcat服务器上运行的Spring-Boot中实现了一个REST API,这个REST API调用另一个运行在不同Tomcat服务器上的Spring REST API。这两个Web应用程序都需要客户端证书进在进行REST呼叫时,如何将客户端证书信息从app1传递到app2?目前,app1上的REST调用如下所示:
@RequestMapping("/logintest")
@ResponseBody
ResponseEntity<String> logintest(HttpServletRequest request) {
// Let's try and login.
HttpUriRequest loginRequest = new HttpGet("http://localhost:8080/app2/login/")
request.setAttribute(X509_CERT_ATTRIBUTE,
request.getAttribute("javax.servlet.request.X509Certificate"))
HttpClient httpClient = new DefaultHttpClient()
HttpResponse response = httpClient.execute(cdpeRequest)
}
但是,这似乎没有将证书信息传递给app2。当app2尝试解析证书信息以进行身份验证时,它会返回null。
App2正在执行以下操作以从请求中提取客户端证书:
X509Certificate[] certs = (X509Certificate[]) request.getAttribute("javax.servlet.request.X509Certificate");
答案 0 :(得分:0)
回答我自己的问题。由于两个应用程序都是使用JSESSIONID cookie在登录后建立SecurityContext的spring应用程序,因此我能够简单地将JSESSIONID cookie从App2传递到App1(登录应用程序)以进行REST调用。