【问题标题】:Passing X509Certificate information with HttpUriRequest使用 HttpUriRequest 传递 X509Certificate 信息
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多