Oracle® Fusion Middleware Oracle WebLogic Server Web サービスのセキュリティ 11g リリース 1 (10.3.1) B55522-01 |
|
![]() 戻る |
![]() 次へ |
転送レベルのセキュリティとは、セキュア ソケット レイヤ (SSL) と HTTP 基本認証のいずれか、または両方を使用して、クライアントと Web サービスの間の接続を保護することです。
SSL では、ネットワーク接続している 2 つのアプリケーションが互いの ID を認証できるようにするとともに、アプリケーション間でやりとりされるデータを暗号化することでセキュアな接続が実現します。認証を使用すると、サーバは (場合によってはクライアントも) ネットワーク接続の相手側アプリケーションの ID を検証できます。クライアント証明書 (双方向 SSL) を使用してユーザを認証できます。
SSL に関する一般情報と WebLogic Server に含む実現については、『Oracle Fusion Middleware Oracle WebLogic Server Security について』の「セキュア ソケット レイヤ (SSL)」を参照してください。
以下の節では、Web サービスの転送レベルのセキュリティをコンフィグレーションする方法について説明します。
SSL、HTTP 基本認証、またはその両方を必要とするポリシーを指定できます。
ポリシーで SSL を必要とする場合は、必ず WebLogic Server のコア セキュリティ サブシステムで SSL をコンフィグレーションします。一方向の SSL (WebLogic Server がクライアント アプリケーションに証明書を提示する必要がある)、または双方向の SSL (クライアント アプリケーションと WebLogic Server が両方とも互いに証明書を提示する必要がある) のいずれかをコンフィグレーションできます。
コア WebLogic Server セキュリティサブシステムのために双方向の、または、一方向の SSL を構成するために, 『Oracle Fusion Middleware Oracle WebLogic Server のセキュリティ』の「SSL のコンフィグレーション」を参照してください。
たとえば、Oracle によって供給されたWssp1.2-2007-Saml2.0-Bearer-Https.xml
ポリシー ファイルはポリシーが コード リスト 3-1 に示されているように SSL を通してクライアント証明書を予想している以下のアサーションを含んでいます。
コード リスト 3-1 ポリシーでの SSL の指定
<sp:TransportToken> <wsp:Policy> <sp:HttpsToken/> </wsp:Policy> </sp:TransportToken>
双方向 SSL が必要である場合、コード リスト 3-2 に示されているように RequireClientCertificate
アサーションを使用してください。
コード リスト 3-2 ポリシーでの双方向 SSL の指定
<sp:TransportToken> <wsp:Policy> <sp:HttpsToken > <wsp:Policy> <sp:RequireClientCertificate/> </wsp:Policy> </sp:HttpsToken> </wsp:Policy> </sp:TransportToken>
Wssp1.2-2007-Https-BasicAuth.xml
ポリシー ファイルでは、コード リスト 3-3 のように、SSL を介したクライアント証明書と HTTP 基本認証の両方を必要としています。
コード リスト 3-3 ポリシーでの SSL および HTTP 基本認証
<sp:TransportToken> <wsp:Policy> <sp:HttpsToken> <wsp:Policy> <sp:HttpBasicAuthentication/> </wsp:Policy> </sp:HttpsToken> </wsp:Policy> </sp:TransportToken>
1 つまたは複数のポリシー ファイルを使用して転送レベルの Web サービス セキュリティをコンフィグレーションするには、次の手順に従います。
WebLogic Server コア セキュリティ サブシステムに対して SSL をコンフィグレーションします。
一方向の SSL (WebLogic Server がクライアント アプリケーションに証明書を提示する必要がある)、または双方向の SSL (クライアント アプリケーションと WebLogic Server が両方とも互いに証明書を提示する必要がある) のいずれかをコンフィグレーションできます。
コア WebLogic Server セキュリティサブシステムのために双方向の、または、一方向の SSL を構成するために 『Oracle Fusion Middleware Oracle WebLogic Server のセキュリティ』の「SSL のコンフィグレーション」を参照してください。
JWS ファイルで @Policy
または @Policies
JWS アノテーションを使用するか、Administration Console を使用して実行時にポリシー ファイルを関連付けます。あるいは、アノテーションを使用して一部のポリシー ファイルを指定し、実行時に追加のポリシー ファイルを関連付けます。
JWS ファイルに @Policy
または @Policies
JWS アノテーションを追加した場合は、通常の反復的開発プロセスの一環として、Web サービスをコンパイルして再デプロイします。
Web サービスを呼び出すクライアント アプリケーションを実行するときに、アプリケーションで使用する SSL 実装を示す特定のプロパティを指定します。特に、以下の場合です。
Certicom SSL 実装を指定するには、以下のプロパティを使用する。
-Djava.protocol.handler.pkgs=weblogic.net -Dweblogic.security.SSL.trustedCAKeyStore=trustStore
trustStore には、信頼性のある証明書 (そのうちの 1 つはサーバの証明書でなければならない) のリストを格納するクライアントサイドのトラストストアの名前を指定します。ホスト名検証を無効にするには、次のプロパティも指定します。
-Dweblogic.security.SSL.ignoreHostnameVerification=true
Sun の SSL 実装を指定するには、以下のプロパティを使用する。
-Djavax.net.ssl.trustStore=trustStore
trustStore には、信頼性のある証明書 (そのうちの 1 つはサーバの証明書でなければならない) のリストを格納するクライアントサイドのトラストストアの名前を指定します。ホスト名検証を無効にするには、次のプロパティも指定します。
-Dweblogic.wsee.client.ssl.stricthostchecking=false
双方向 SSL の詳細については、「クライアント アプリケーションでの双方向 SSL のコンフィグレーション」を参照してください。
このセクションは一方向 SSL のために移送セキュリティでスタンドアロンクライアントから JAX-WS を構成するための分かりやすい例について説明します。
追加必須の情報に関して以下のドキュメンテーションを参照してください。
『Oracle Fusion Middleware Oracle WebLogic Server セキュリティ』の「SSL のコンフィグレーション」を参照してください。
『Oracle Fusion Middleware Oracle WebLogic Server Administration Console ヘルプ』の 「SSL のコンフィグレーション」
『oracle fusion middleware ORACLE Weblogic Server Administration Console ヘルプ』の「キーストアのコンフィグレーション」
Web サービス Java ソースはコード リスト 3-4 に示します。
コード リスト 3-4 Web サービス一方向 SSL の例
package httpbasicauth import javax.jws.WebMethod; import javax.jws.WebService; import weblogic.jws.Policy; @WebService(name="HttpsBasicAuth", portName="HttpsBasicAuthSoapPort" targetNamespace="https://httpsbasicauth") // HttpsとHttp基本認証に関する安全保障ポリシー @Policy(uri = "policy:Wssp1.2-2007-Https-BasicAuth.xml) public class HttpsBasicAuth { public HttpsBasicAuth() {} WebMethod() public String echoString(String input) { return("[HttpsBasicAuth.echoString]: " + input); } }
「weblogic.net」をJava のプロトコルハンドラとして使用するスタンドアロン Java Web サービスクライアントコードは、コード リスト 3-5:に示します。
コード リスト 3-5 Web サービス クライアント weblogic.net 付き一方向 SSL の例
package httpbasicauth.client import java.net.URL; import java.security.cert.X509Certificate; import java.util.Map; import javax.xml.namespace.QName; import javax.xml.ws.BindingProvider; import httpsbasicauth.client.HttpsBasicAuthService; import httpsbasicauth.client.HttpsBasicAuth; public class HttpsBasicAuthClient private final static String ENDPOINT = .....; private final static String TARGET_NAMESPACE = "https://httpsbasicauth private final static String USERNAME = ....; private final static String PASSWORD = ....; private final static String TRUST_STORE_LOCATION = .....; private final static String TARGET_NAMESPACE = ....; private HttpsBasicAuthService service; private HttpsBasicAuth stub; public HttpsBasicAuthClient() { try { // これは Server によって使用された Public Certificate のために検証というホスト名を無視します System.setProperty("weblogic.security.SSL.ignoreHostnameVerification","true"); System.setProperty("java.protocol.handler.pkgs", "weblogic.net"); System.setProperty("weblogic.security.TrustKeyStore","CustomTrust"); System.setProperty("weblogic.security.CustomTrustKeyStoreFileName", "TRUST_STORE_LOCATION"); System.setProperty("weblogic.security.CustomTrustKeyStorePassPhrase","TRUST_STORE_PASSWORD"); System.setProperty("weblogic.security.CustomTrustKeyStoreType","JKS"); URL url = new URL(endpoint+"?WSDL"); QName serviceName = new QName(TARGET_NAMESPACE, "HttpsBasicAuthService"); service = new HttpsBasicAuthService(); stub = service.getHttpsBasicAuthSoapPort(); BindingProvider bp = (BindingProvider) stub; Map<String,Object> context = bp.getRequestContext(); context.put(BindingProvider.USERNAME_PROPERTY, USERNAME) context.put(BindingProvider.PASSWORD_PROPERTY, PASSWORD); context.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, ENDPOINT); } catch (Exception e) { System.out.println("Error in creating the stub : " + e.getMessage()); if (verbose) e.printStackTrace(); } } public void invokeEchoString() throws Exception { String output = stub.echoString(ENDPOINT); System.out.println("[HttpsBasicAuthClient.invokeGEchoString]: " + output); } public static void main(String[] argv) throws Exception { HttpsBasicAuthClient client = new HttpsBasicAuthClient(); System.setProperty("weblogic.wsee.verbose","*"); System.out.println("----------------------"); System.out.println(" Invoking echoString "); client.invokeEchoString(); } }
デフォルト Java のプロトコル操作者を使用するスタンドアロン Java Web サービスクライアントコードは、コード リスト 3-6 に示されています :
コード リスト 3-6 Web サービス クライアント java.net 付き一方向 SSL の例
package httpbasicauth.client import java.net.URL; import java.security.cert.X509Certificate; import java.util.Map; import javax.xml.namespace.QName; import javax.xml.ws.BindingProvider; import httpsbasicauth.client.HttpsBasicAuthService; import httpsbasicauth.client.HttpsBasicAuth; public class HttpsBasicAuthClient private final static String ENDPOINT = .....; private final static String TARGET_NAMESPACE = "https://httpsbasicauth private final static String USERNAME = ....; private final static String PASSWORD = ....; private final static String TRUST_STORE_LOCATION = .....; private final static String TARGET_NAMESPACE = ....; private HttpsBasicAuthService service; private HttpsBasicAuth stub; public HttpsBasicAuthClient() { try { System.setProperty("java.protocol.handler.pkgs", "java.net"); System.setProperty("javax.net.ssl.trustStore", TRUST_STORE_LOCATION); System.setProperty("javax.net.ssl.trustStorePassword", TRUST_STORE_PASSWORD); URL url = new URL(ENDPOINT+"?WSDL"); QName serviceName = new QName(TARGET_NAMESPACE, "HttpsBasicAuthService"); service = new HttpsBasicAuthService(); stub = service.getHttpsBasicAuthSoapPort(); BindingProvider bp = (BindingProvider) stub; Map<String,Object> context = bp.getRequestContext(); context.put(BindingProvider.USERNAME_PROPERTY, USERNAME) context.put(BindingProvider.PASSWORD_PROPERTY, PASSWORD); context.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, ENDPOINT); } catch (Exception e) { System.out.println("Error in creating the stub : " + e.getMessage()); if (verbose) e.printStackTrace(); } } public void invokeEchoString() throws Exception { String output = stub.echoString(ENDPOINT); System.out.println("[HttpsBasicAuthClient.invokeGEchoString]: " + output); } public static void main(String[] argv) throws Exception { HttpsBasicAuthClient client = new HttpsBasicAuthClient(); System.setProperty("weblogic.wsee.verbose","*"); System.out.println("----------------------"); System.out.println(" Invoking echoString "); client.invokeEchoString(); } }
Ant ビルド ファイルの関連部は コード リスト 3-7 に示します。
コード リスト 3-7 Ant ビルド ファイル
<property name="output.dir" value="../../build/httpsbasicauth" /> <property name="service.dir" value="${output.dir}/httpsbasicauthApp" /> <property name="output.dir.client" value="${output.dir}/client" /> <property name="clientclasses.dir" value="${output.dir}/client" /> <property name="service.name" value="HttpsBasicAuth" /> <property name="wsdl.name" value="HttpsBasicAuthService" /> <property name="packageName" value="httpsbasicauth.client" /> <path id="client.class.path"> <pathelement path="${java.class.path}" /> <pathelement path="${clientclasses.dir}" /> </path> <taskdef name="clientgen" classname="weblogic.wsee.tools.anttasks.ClientGenTask" /> <taskdef name="jwsc" classname="weblogic.wsee.tools.anttasks.JwscTask"/> <target name="jwsc"> <jwsc srcdir="." destdir="${output.dir.server}" sourcepath="../" debug="true" keepGenerated="true"> <module name="HttpsBasicAuth" contextPath="httpsbasicauth"> <jws file="HttpsBasicAuth.java" type="JAXWS" generateWsdl="true"> <WLHttpTransport contextPath="httpsbasicauth" serviceUri="httpsbasicauth"/> </jws> </jwsc> </target> <target name="client"> <clientgen wsdl="jar:file:${service.dir}/${service.name}.war!/WEB-INF/${wsdl.name}.wsdl" type="JAXWS" destDir="${clientclasses.dir}" packageName="${packageName}"> </clientgen> <javac srcdir="${clientclasses.dir}" destdir="${clientclasses.dir}" includes="**/*.java" classpathref="client.class.path" /> <javac srcdir="./" destdir="${clientclasses.dir}" includes="HttpsBasicAuthClient.java" classpathref="client.class.path" /> </target> <target name="run"> <java classname="httpsbasicauth.client.HttpsBasicAuthClient" classpathref="client.class.path" fork="true" /> </target>
JAX-RPC クライアントは SSL 接続での要求の状態を固持するためには信頼性のあるメッセージングでのカスタム SSL アダプタの使用で説明された SSLAdapter メカニズムを使用できます。その際に、サブシステムは接続の確立に使用されたカスタム SSLAdapter のインスタンスを保持します。
Oracle WebLogic Server のリリースは、システム プロパティからSSLSocketFactory、または、新しいweblogic.wsee.jaxws.sslclient.PersistentSSLInfo classから構成するために使用する JAX-WS のための新しい双方向 SSL クライアント API を含んでいます。API は、メッセージングの信頼性、コールバックなどのための SSL インフォメーションを保持でき、以下の既知のシステムのプロパティをサポートします
weblogic.wsee.client.ssl.relaxedtrustmanager
weblogic.security.SSL.ignoreHostnameVerification
以下の新しいクラスは利用可能です。完全記述に関しては、Javadoc を参照してください。
weblogic.wsee.jaxws.sslclient.SSLClientUtilこのクラスには、以下のメソッドがあります。
public static SSLSocketFactory getSSLSocketFactory(KeyManager[] kms, TrustManager[] tms);
public static SSLSocketFactory getSSLSocketFactory(PersistentSSLInfo sslInfo);
public static SSLSocketFactory getSSLSocketFactoryFromSysProperties();
weblogic.wsee.jaxws.sslclient.PersistentSSLInfo、SSL 情報の Javabean の設定
weblogic.wsee.jaxws.JAXWSProperties、CLIENT_PERSISTENT_SSL_INFOプロパティを含む。
コード リスト 3-8 はシステム プロパティからSSLSocketFactory を取得して要求コンテキストでそれらを使用することの例を示します。
注意 : clientKeyStore と clientKeyStorePasswd には、この制限があります: J2SE のSSL パッケージは、クライアントのプライベート キーのパスワードがクライアントのキーストアに関するパスワードと同じであることが必要です。この理由で、クライアント キーストアは一つプライベート キーと X.509 証明書のペアを含むことができます。 |
コード リスト 3-8 システム プロパティから SSLSocketFactory を取得
String clientKeyStore = ...; String clientKeyStorePasswd = ...; String trustKeystore = ...; String trustKeystorePasswd = ...; System.setProperty("javax.net.ssl.keyStore", clientKeyStore); System.setProperty("javax.net.ssl.keyStorePassword", clientKeyStorePasswd); System.setProperty("javax.net.ssl.trustStore", trustKeystore); System.setProperty("javax.net.ssl.trustStorePasswd", trustKeystorePasswd); ((BindingProvider) port).getRequestContext().put( JAXWSProperties.SSL_SOCKET_FACTORY, SSLClientUtil.getSSLSocketFactoryFromSysProperties());
コード リスト 3-9 に,固執は必要でないかどうかをしつこいインフォメーション (PersistentSSLInfo) から SSLSocketFactoryを手に入れて直接SSLSocketFactoryを設定することを示します。
コード リスト 3-9 PersistentSSLInfo から SSLSocketFactory を取得
String clientKeyStore = ...; String clientKeyStorePasswd = ...; String clientKeyAlias = ...; String clientKeyPass = ...; String trustKeystore = ...; String trustKeystorePasswd = ...; PersistentSSLInfo sslInfo = new PersistentSSLInfo(); sslInfo.setKeystore(clientKeyStore); sslInfo.setKeystorePassword(clientKeyStorePasswd); sslInfo.setKeyAlias(clientKeyAlias); sslInfo.setKeyPassword(clientKeyPass); sslInfo.setTrustKeystore(trustKeystore); //ユーザはデバッグのために sslInfo を印刷できます。 System.out.print(sslInfo.toString()); //固執のために requestContext に sslInfo を入れてください、それが JAX-WS の RM、Callback などの高度な機能によって必要される場合があります。 ((BindingProvider) port).getRequestContext().put( JAXWSProperties.CLIENT_PERSISTENT_SSL_INFO, sslInfo); //あるいはまた、固執は必要でないなら、あなたが直接SSLSocketFactory を設定できます。注意 : sslInfo が上の系列で用意ができているなら、以下の系列は省略されるべきです。 ((BindingProvider) port).getRequestContext().put( JAXWSProperties.SSL_SOCKET_FACTORY, SSLClientUtil.getSSLSocketFactory(sslInfo));
sslInfo は、 (clientKeyAlias) キーのエリアスxを設定できます。クライアントキーストアに複数のキーがある場合、これはキーストア(SSLのクライアントサイドキーとしての)にキーを示します。
UserDataConstraint
アノテーションでは、Web サービスが HTTPS 転送を使用して呼び出されることを要求します。
JWS ファイルで UserDataConstraint
アノテーションを使用して転送レベルの Web サービス セキュリティをコンフィグレーションするには、次の手順に従います。
WebLogic Server コア セキュリティ サブシステムに対して SSL をコンフィグレーションします。
一方向の SSL (WebLogic Server がクライアント アプリケーションに証明書を提示する必要がある)、または双方向の SSL (クライアント アプリケーションと WebLogic Server が両方とも互いに証明書を提示する必要がある) のいずれかをコンフィグレーションできます。
コア WebLogic Server セキュリティサブシステムのために双方向の、または、一方向の SSL を構成するために『Oracle Fusion Middleware Oracle WebLogic Server セキュリティ』の「 SSL のコンフィグレーション」を参照してください。
Web サービスを実装する JWS ファイル内に @weblogic.jws.security.UserDataConstraint
アノテーションを追加し、Web サービスが HTTPS 転送を使用して呼び出されることを要求します。
詳細については、『Oracle Fusion Middleware Oracle WebLogic Server コマンド リファレンス』の「weblogic.jws.security.UserDataConstraint」を参照してください。
通常の反復的な開発プロセスの一部として、Web サービスを再コンパイルして再デプロイします。
『Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC を使用した Web サービス入門』の「WebLogic Web サービスの開発」を参照してください。
clientgen
Ant タスクを呼び出す build.xml
ファイルを更新して、Web サービスの JAX-RPC スタブの生成に、デプロイされているサービスの動的 WSDL ではなく、静的 WSDL を使用するようにします。
この場合に、clientgen
が動的 WSDL からスタブを生成できない理由は、@UserDataConstraint
アノテーションを指定する際に、すべてのクライアント アプリケーションで、clientgen
を含むトラストストアを指定することが必要であるためです。しかし現在、clientgen
でトラストストアを指定する方法はありません。したがって、Ant タスクは、動的 WSDL と同じ方法で Web サービスを記述する静的な WSDL からクライアント コンポーネントを生成しなければなりません。
Web サービスを呼び出すクライアント アプリケーションを実行するときに、アプリケーションで使用する SSL 実装を示す特定のプロパティを指定します。特に、以下の場合です。
Certicom SSL 実装を指定するには、以下のプロパティを使用する。
-Djava.protocol.handler.pkgs=weblogic.net -Dweblogic.security.SSL.trustedCAKeyStore=trustStore
trustStore には、信頼性のある証明書 (そのうちの 1 つはサーバの証明書でなければならない) のリストを格納するクライアントサイドのトラストストアの名前を指定します。ホスト名検証を無効にするには、次のプロパティも指定します。
-Dweblogic.security.SSL.ignoreHostnameVerification=true
Sun の SSL 実装を指定するには、以下のプロパティを使用する。
-Djavax.net.ssl.trustStore=trustStore
trustStore には、信頼性のある証明書 (そのうちの 1 つはサーバの証明書でなければならない) のリストを格納するクライアントサイドのトラストストアの名前を指定します。ホスト名検証を無効にするには、次のプロパティも指定します。
-Dweblogic.wsee.client.ssl.stricthostchecking=false
双方向 SSL の詳細については、「クライアント アプリケーションでの双方向 SSL のコンフィグレーション」を参照してください。
WebLogic Server で双方向 SSL をコンフィグレーションした場合は、一方向 SSL で必要なように WebLogic Server がクライアント アプリケーションに証明書を提示するだけでなく、クライアント アプリケーションも WebLogic Server に証明書を提示する必要があります。さらに、以下の要件も満たしている必要があります。
クライアントのプライベート キーと X.509 証明書のペアが格納されたクライアントサイド キーストアを作成する。
J2SE の SSL パッケージでは、クライアントのプライベート キーのパスワードはクライアントのキーストアのパスワードと同じでなければならない。このため、クライアントのキーストアには 1 つのプライベート キーと X.509 証明書のペアしか格納できません。
WebLogic Server コア セキュリティ サブシステムをコンフィグレーションして、クライアント キーストア内のクライアントの X.509 証明書をユーザにマップする。『Oracle Fusion Middleware Oracle WebLogic Server セキュリティ』の「ユーザ名マッパーのコンフィグレーション」を参照してください。
クライアントが信頼する証明書を格納するトラストストアを作成する。クライアント アプリケーションはこのトラストストアを使用して、WebLogic Server から受け取った証明書を検証します。前の項目で説明した J2SE のパスワード要件のため、このトラストストアは、クライアントがサーバに提示するキー ペアを格納するキーストアとは異なっている必要があります。
このステップを実行するのに Cert Gen ユーティリティまたは Sun Microsystem のキーツール (http://java.sun.com/javase/6/docs/tooldocs/solaris/keytool.html
) ユーティリティを使用できます。開発が目的の場合は、keytool
ユーティリティを使用すると簡単に開始できます。
『Oracle Fusion Middleware Oracle WebLogic Server セキュリティ』の「 プライベート キー、デジタル証明書、および信頼できる認証局の取得」を参照してください。
Web サービスを呼び出すクライアント アプリケーションを実行するときに、以下のプロパティを指定する。
-Djavax.net.ssl.trustStore=trustStore
-Djavax.net.ssl.trustStorePassword=trustStorePassword
trustStore には、信頼性のある証明書 (そのうちの 1 つはサーバの証明書でなければならない) のリストを格納するクライアントサイドのトラストストアの名前を指定し、trustStorePassword には、トラストストアのパスワードを指定します。
上記のプロパティは、クライアントサイド キーストアを指定するために設定する必要のある標準的なプロパティに追加されるものです。
-Djavax.net.ssl.keyStore=keyStore
-Djavax.net.ssl.keyStorePassword=keyStorePassword
注意 : Stub および MessageContext プロパティに格納されるすべてのオブジェクトはシリアライズ可能か外部化可能でなければならず、サーバのシステム CLASSPATH でその実装を使用できるようにする必要があります。この節では特定のケースのカスタム SSLAdapter 実装について説明します。 |
信頼性のあるメッセージングまたはバッファリングを使用するとき、クライアントとサーバとの SSL 関係を確立するのに必要であるクライアント証明書と他のサービスを提供するのにカスタムSSLAdapter実現を使用できます。信頼性のあるメッセージングおよびバッファリングのサブシステムは、SSL 接続の間にリクエストの状態を保持します。その際に、サブシステムは接続の確立に使用されたカスタム SSLAdapter のインスタンスを保持します。
リクエストが永続性から復元されるとき、リクエストと一緒に保存されていたカスタム SSLAdapter オブジェクトを適切に復元するために、永続性機能はカスタム SSLAdapter クラスにアクセスする必要があります。これを可能にするには、(サーバにデプロイされたアプリケーションの内部ではなく) サーバのシステム CLASSPATH を通じて、カスタム SSLAdapter クラスを提供する必要があります。
カスタム SSLAdapter はSSLAdapterを拡張する必要があり、以下の手順でインストールされ、有効にされます。
weblogic.wsee.connection.transport.https.HttpsTransportInfo
のインスタンスを作成します。
HttpsTransportInfo.setSSLAdapter(SSLAdapter adapter)
を呼び出して、その転送情報にカスタム SSL アダプタを設定します。
次のメソッドを呼び出して、Web サービス スタブ インスタンス (javax.xml.rpc.Stub 型のスタブ)
に転送情報を設定します。
stub._setProperty(weblogic.wsee.connection.soap.SoapClientConnection.TRANSPORT_INFO_PROPERTY,ti);
stub
は Web サービス スタブ、ti
はコンフィグレーションした HttpsTransportInfo
です。
この手順に従い、カスタム SSLAdapter クラスをシステム CLASSPATH で提供しない場合は、ClassNotFoundException
例外が生成されます。
java.io.IOException: java.lang.ClassNotFoundException: examples.webservices.client.ServiceBase$TestSSLAdapter