4

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();

System.setPropertyしかし、これは EJB の内部で使用されるため、すべての Web サービス クライアントに影響するため、JVM 全体のパラメーターを を使用して設定したくありません。

クライアント証明書をパラメーターとして渡す方法はありますか? 私が読むことができたものから、カスタムを使用する必要がありますKeyManagerが、カスタム KeyManager をクライアントに設定する方法がわかりません。

ありがとう!

4

1 に答える 1

1

これがjaxwsの使用方法で機能するかどうかはわかりませんが、次のようなものを使用して、jaxwsクライアントでカスタムソケットファクトリ(カスタムsslコンテキストで構成)を設定できます。

dispatch.getRequestContext().put(com.sun.xml.ws.developer.JAXWSProperties.SSL_SOCKET_FACTORY, getSSLContext().getSocketFactory());

(これは、sun/oracle jaxws 実装に固有のものです)。

于 2011-04-16T20:48:00.567 に答える