【发布时间】:2015-07-15 16:43:18
【问题描述】:
我在运行在 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");
【问题讨论】:
标签: spring spring-security x509certificate apache-commons-httpclient