java - 如何使用带 SSL 的 Play WS?

标签 java rest playframework-2.3

我的 Java 客户端应用程序需要执行 REST 调用。我被指示使用 Play 的 WS 实现。目前,我有这个:

AsyncHttpClientConfig.Builder builder = new com.ning.http.client.AsyncHttpClientConfig.Builder();
NingWSClient wsc = new play.libs.ws.ning.NingWSClient(builder.build());
WSRequestHolder holder = wsc.url("http://www.simpleweb.org/");

这行得通。但是,我的应用程序需要访问使用 SSL 的安全 Web 服务。我的客户有 PKCS12 证书。如何让 WS 使用此证书建立安全连接?

需要说明的是,这不是 Play 应用程序。

最佳答案

直接用 WS 是不可能的。 Play docs says :“WS 不支持客户端证书(又名双向 TLS/MTLS/客户端身份验证)。您应该直接在 AsyncHttpClientConfig 的实例中设置 SSLContext,并设置适当的 KeyStore 和 TrustStore。”

你也许可以做这样的事情:

KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory
        .getDefaultAlgorithm());
KeyStore keyStore = KeyStore.getInstance("pkcs12");
InputStream inputStream = new FileInputStream("YOUR.p12");

keyStore.load(inputStream, "Your password as char[]");
keyManagerFactory.init(keyStore, "Your password as char[]");

SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
sslContext.init(keyManagerFactory.getKeyManagers(), null,new SecureRandom());
AsyncHttpClientConfig httpClientConfig = new AsyncHttpClientConfig.Builder().setSSLContext(sslContext).build();
AsyncHttpClient httpClient = new AsyncHttpClient(httpClientConfig);

关于java - 如何使用带 SSL 的 Play WS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27726968/

相关文章:

java - 我的 java 代码无法搜索附近的蓝牙设备

wcf - 如何在WCF Restful Service中实现身份验证和授权

java - 与 MongoDB 和 Java 8 一起使用的 Play-Framework 2.4.x

djangorest框架m2m更新方法

java - 使用 Jersey 加密 RESTful 服务的数据

json - 使用 Play 2.3 和 Scala 2.11.1 将具有枚举属性的类转换为 Json 时出错

playframework-2.3 - 无法让 sbt-web 与 npm 一起用于前端依赖项

java - 如何在java中用全0初始化100字节的字节数组

java - 在角度站点中使用 xpath 时找不到元素

java - 如何使用 UIBinder 在 GWT 元素中的 ScrollPanel 中将内容作为网格