簡體   English   中英

將客戶端證書傳遞給Web服務,而不設置系統范圍的屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM