[英]Pass client certificate to web service without setting system-wide properties
我正在嘗試使用JAX-RPC實現將客戶端證書傳遞給Web服務。 (Web服務采用rpc編碼樣式)。
到目前為止,我可以通過設置系統屬性來實現:
System.setProperty("javax.net.ssl.keyStore", "client_cert.p12");
System.setProperty("javax.net.ssl.keyStorePassword", "newpasswd");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
然后構建和調用Web服務:
CertificateInfoPortType svc = new CertificateInfoLocator().getCertificateInfo(new URL(SERVICE_URL));
svc.methodToBeInvoked();
但由於這將在EJB內部使用,因此我不想使用System.setProperty
設置JVM范圍的參數,因為這會影響所有Web服務客戶端。
有沒有辦法將客戶端證書作為參數傳遞? 從我能夠閱讀的內容來看,我應該使用自定義KeyManager
,但我不知道如何將自定義KeyManager設置為客戶端。
謝謝!
我不確定這是否適用於您如何使用jaxws,但您可以使用以下內容在jaxws客戶端上設置自定義套接字工廠(配置自定義ssl上下文):
dispatch.getRequestContext().put(com.sun.xml.ws.developer.JAXWSProperties.SSL_SOCKET_FACTORY, getSSLContext().getSocketFactory());
(這是針對sun / oracle jaxws實現的)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.