ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの保護
11g リリース1(10.3.3)
B61620-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

3 トランスポート・レベルのセキュリティの構成

トランスポート・レベルのセキュリティとは、Secure Sockets Layer (SSL)とHTTP基本認証のいずれか、または両方を使用して、クライアント・アプリケーションとWebサービスの間の接続を保護することです。

SSLでは、ネットワーク接続している2つのアプリケーションが互いのアイデンティティを認証できるようにするとともに、アプリケーション間でやりとりされるデータを暗号化することでセキュアな接続が実現します。認証を使用すると、サーバーは(場合によってはクライアントも)ネットワーク接続の相手側アプリケーションのアイデンティティを検証できます。クライアント証明書(双方向SSL)を使用してユーザーを認証できます。

SSLの一般情報とWebLogic Serverに含まれる実装については、『Oracle WebLogic Serverセキュリティの理解』のSecure Sockets Layer (SSL)に関する項を参照してください。

次の項では、Webサービスのトランスポート・レベルのセキュリティを構成する方法について説明します。

ポリシーによるトランスポート・レベルのセキュリティの構成

SSLまたはHTTP基本認証、あるいはその両方を必要とするポリシーを指定できます。

ポリシーでSSLを必要とする場合は、必ずWebLogic Serverのコア・セキュリティ・サブシステムでSSLを構成します。一方向のSSL (WebLogic Serverがクライアント・アプリケーションに証明書を提示する必要がある)、または双方向のSSL (クライアント・アプリケーションとWebLogic Serverが両方とも互いに証明書を提示する必要がある)のいずれかを構成できます。

WebLogic Serverのコア・セキュリティ・サブシステムに対して双方向または一方向のSSLを構成する場合は、『Oracle WebLogic Serverの保護』のSSLの構成に関する項を参照してください。

たとえば、Oracle提供のWssp1.2-2007-Saml2.0-Bearer-Https.xmlポリシー・ファイルには、ポリシーがSSLによるクライアント証明書を予期していることを示す次のアサーションが含まれています(例3-1を参照)。

例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サービス・セキュリティを構成するには:

  1. WebLogic Serverコア・セキュリティ・サブシステムに対してSSLを構成します。

    一方向のSSL (WebLogic Serverがクライアント・アプリケーションに証明書を提示する必要がある)、または双方向のSSL (クライアント・アプリケーションとWebLogic Serverが両方とも互いに証明書を提示する必要がある)のいずれかを構成できます。

    WebLogic Serverのコア・セキュリティ・サブシステムに対して双方向または一方向のSSLを構成する場合は、『Oracle WebLogic Serverの保護』のSSLの構成に関する項を参照してください。

  2. JWSファイルで@Policyまたは@Policies JWSアノテーションを使用するか、管理コンソールを使用して実行時にポリシー・ファイルを関連付けます。あるいは、アノテーションを使用して一部のポリシー・ファイルを指定し、実行時に追加のポリシー・ファイルを関連付けます。


    注意:

    Webサービスにトランスポート・レベルのセキュリティ・ポリシーを指定する場合、ポリシーの指定はクラス・レベルで行う必要があります。

    また、トランスポート・レベルのセキュリティ・ポリシーは着信方向と発信方向の両方に適用する必要があります。つまり、着信にHTTPSを使用し、発信にHTTPを使用することはできません。


  3. JWSファイルに@Policyまたは@Policies JWSアノテーションを追加した場合は、通常の反復的開発プロセスの一環として、Webサービスをコンパイルして再デプロイします。

  4. 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の構成」を参照してください。

JWSファイルでのJWSアノテーションの使用例

Webサービスにトランスポート・レベルのセキュリティ・ポリシーを指定する場合、次の例に示すように、ポリシーの指定はクラス・レベルで行う必要があります。

クラス・レベルでのトランスポート・レベルのポリシー

@Policy(uri="policy:Wssp1.2-2007-Saml2.0-Bearer-Https.xml")
public class EchoService {
   ....

JAX-WSのトランスポート・セキュリティの構成例

この項では、スタンドアロンの一方向SSLクライアントからトランスポート・セキュリティを使用したJAX-WSを構成するための単純な例について説明します。

その他の前提条件については、次のドキュメントを参照してください。

一方向SSL (HTTPSおよびHTTP基本認証の例)

WebサービスのJavaソースを例3-4に示します。


注意:

Webサービスにトランスポート・レベルのセキュリティ・ポリシーを指定する場合、ポリシーの指定はクラス・レベルで行う必要があります。

また、トランスポート・レベルのセキュリティ・ポリシーは着信方向と発信方向の両方に適用する必要があります。つまり、着信にHTTPSを使用し、発信にHTTPを使用することはできません。


例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")
 
// Security Policy for Https and Http Basic Authentication
@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 weblogic.netを使用するWebサービス・クライアントの一方向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 {
      // This ignores the host name verifcation for the Public Certificate used by the Server 
      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 java.netを使用するWebサービス・クライアントの一方向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-WS用の新しい双方向永続SSLクライアントAPI

JAX-RPCクライアントは、SSLAdapterメカニズム(「信頼性のあるメッセージングでのカスタムSSLアダプタの使用」を参照)を使用して、SSL接続の間、リクエストの状態を永続化することができます。その際に、接続の確立に使用されたカスタムSSLAdapterのインスタンスを永続化します。

このリリースのOracle WebLogic Serverは、システム・プロパティまたは新しいweblogic.wsee.jaxws.sslclient.PersistentSSLInfoクラスからSSLSocketFactoryを構成するために使用する、JAX-WS用の新しい双方向SSLクライアントAPIを備えています。このAPIは、信頼性のあるメッセージング、コールバックなどのSSL情報を永続化することができ、次のよく知られたシステム・プロパティをサポートします。

次の新しいクラスが使用できます。詳しい説明は、Javadocを参照してください。

システム・プロパティからSSLSocketFactoryを取得する例

例3-8は、システム・プロパティからSSLSocketFactoryを取得してリクエスト・コンテキストで使用する例を示しています。


注意:

clientKeyStoreclientKeyStorePasswdには、J2SEのSSLパッケージを使用する場合に、クライアントの秘密鍵のパスワードとクライアントのキーストアのパスワードが同一であることが求められるという制約があります。そのため、クライアント・キーストアには秘密鍵とX.509証明書のペアを1つしか格納できません。

例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);
      
      //user can print out the sslInfo for debug
      System.out.print(sslInfo.toString());
 
//Put sslInfo into requestContext for persistence, it might be required by JAX-WS
advance features, such as, RM, Callback
      ((BindingProvider) port).getRequestContext().put(
        JAXWSProperties.CLIENT_PERSISTENT_SSL_INFO, sslInfo);
        
      //Alternatively, you can directly set a SSLSocketFactory if persistence is
not necessary. Note: The following line should be omitted if sslInfo is set with
above line.
      ((BindingProvider) port).getRequestContext().put(
        JAXWSProperties.SSL_SOCKET_FACTORY, 
        SSLClientUtil.getSSLSocketFactory(sslInfo));

sslInfoでは、クライアント・キーストアに複数のキーがある場合にキーストア内のキーを(SSLのクライアント側キーとして)示す、キー別名(clientKeyAlias)を設定できます。

UserDataConstraintによるトランスポート・レベルのセキュリティの構成: 主な手順(JAX-RPCのみ)

UserDataConstraintアノテーションを指定すると、HTTPSトランスポートを使用してWebサービスを呼び出すことが必要となります。

JWSファイルでUserDataConstraintアノテーションを使用してトランスポート・レベルのWebサービス・セキュリティを構成するには:

  1. WebLogic Serverコア・セキュリティ・サブシステムに対してSSLを構成します。

    一方向のSSL (WebLogic Serverがクライアント・アプリケーションに証明書を提示する必要があります)、または双方向のSSL (クライアント・アプリケーションとWebLogic Serverが両方とも互いに証明書を提示する必要があります)のいずれかを構成できます。

    WebLogic Serverのコア・セキュリティ・サブシステムに対して双方向または一方向のSSLを構成する場合は、『Oracle WebLogic Serverの保護』のSSLの構成に関する項を参照してください。

  2. Webサービスを実装するJWSファイル内に@weblogic.jws.security.UserDataConstraintアノテーションを追加し、Webサービスの呼出しにHTTPSトランスポートの使用が必要となるようにします。

    詳細は、Oracle WebLogic Server WebLogic Webサービス・リファレンスのweblogic.jws.security.UserDataConstraintに関する項を参照してください。

  3. 通常の反復的な開発プロセスの一部として、Webサービスを再コンパイルして再デプロイします。

    Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイドのWebLogic Webサービスの開発に関する項を参照してください。

  4. clientgen Antタスクを呼び出すbuild.xmlファイルを更新して、WebサービスのJAX-RPCスタブの生成に、デプロイされているサービスの動的WSDLではなく、静的WSDLを使用するようにします。

    この場合に、clientgenが動的WSDLからスタブを生成できないのは、@UserDataConstraintアノテーションを指定する際に、clientgenを含むすべてのクライアント・アプリケーションで信頼ストアを指定することが必要であるためです。しかし現在、clientgenで信頼ストアを指定する方法はありません。したがって、Antタスクは、Webサービスが記述された静的なWSDLから動的WSDLと同じ方法でクライアント・コンポーネントを生成する必要があります。

  5. 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の構成


注意:

非同期の、または信頼性のあるメッセージングを使用するWebサービスでは、非同期のレスポンスや確認応答を送信する目的で(受信側サービスから送信側サービスに向けて)新しい接続を確立するときに、サーバーのSSL証明書を自動的に使用します。

WebLogic Serverで双方向SSLを構成した場合は、一方向SSLで必要とされるようにWebLogic Serverがクライアント・アプリケーションに証明書を提示するだけでなく、クライアント・アプリケーションがWebLogic Serverに証明書を提示する必要があります。さらに、次の要件も満たす必要があります:

信頼性のあるメッセージングでのカスタムSSLアダプタの使用


注意:

StubおよびMessageContextプロパティに格納されるすべてのオブジェクトは、シリアライズ可能かつ外部化可能であること、およびサーバーのシステムCLASSPATHにその実装が指定されていることが必要です。この項では、カスタムSSLAdapterを実装する場合について説明します。

カスタムSSLAdapter実装を使用すると、信頼性のあるメッセージングまたはバッファリングを使用する場合に、クライアントとサーバーの間のSSL接続を確立するために必要なクライアント証明書とその他のサービスを提供できます。信頼性のあるメッセージングおよびバッファリングのサブシステムは、SSL接続の間、リクエストの状態を永続化します。その際に、接続の確立に使用されたカスタムSSLAdapterのインスタンスを永続化します。

リクエストを永続化から復元する際に、リクエストとともに保存されていたカスタムSSLAdapterオブジェクトを正しく復元するには、永続化機能がカスタムSSLAdapterクラスにアクセスできることが必要です。これを可能にするには、(サーバーにデプロイされたアプリケーションの内部ではなく)サーバーのシステムCLASSPATHを通じて、カスタムSSLAdapterクラスを提供する必要があります。

カスタムSSLAdapterは、SSLAdapterを拡張したものであることが必要であり、次の手順でインストールおよび有効化します。

  1. weblogic.wsee.connection.transport.https.HttpsTransportInfoのインスタンスを作成します。

  2. HttpsTransportInfo.setSSLAdapter(SSLAdapter adapter)を呼び出して、そのトランスポート情報にカスタムSSLアダプタを設定します。

  3. 次のメソッドを呼び出して、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