使用 HttpUriRequest 传递 X509Certificate 信息

Passing X509Certificate information with HttpUriRequest

我在 Spring-Boot 运行 中实现了一个 REST API 在 Tomcat 服务器上,这个 REST API 调用另一个 Spring REST API 运行 在不同的 Tomcat 服务器上。这两个 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 尝试解析证书信息以进行身份​​验证时,它会返回一个空值。

App2 正在执行以下操作以从请求中提取客户端证书:

X509Certificate[] certs = (X509Certificate[]) request.getAttribute("javax.servlet.request.X509Certificate");

回答我自己的问题。由于这两个应用程序都是 spring 应用程序,它们在登录后使用 JSESSIONID cookie 建立 SecurityContext,因此我能够简单地将 JSESSIONID cookie 从 App2 传递到 App1(登录应用程序)以进行 REST 调用。