WebLogic Web サービスのセキュリティ

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

転送レベルのセキュリティのコンフィグレーション

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

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

SSL に関する概要と WebLogic Server に含まれている実装については、『WebLogic セキュリティについて』の「セキュア ソケット レイヤ (SSL)」を参照してください。

以下の節では、Web サービスの転送レベルのセキュリティをコンフィグレーションする方法について説明します。

 


ポリシーによる転送レベルのセキュリティのコンフィグレーション

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

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

WebLogic Server コア セキュリティ サブシステムに対して、双方向および一方向の SSL をコンフィグレーションする手順については、『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 サービス セキュリティをコンフィグレーションするには、次の手順に従います。

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

    WebLogic Server コア セキュリティ サブシステムに対して、双方向および一方向の SSL をコンフィグレーションする手順については、『WebLogic Server のセキュリティ』の「SSL のコンフィグレーション」を参照してください。

  3. JWS ファイルで @Policy または @Policies JWS アノテーションを使用するか、Administration Console を使用して実行時にポリシー ファイルを関連付けます。あるいは、アノテーションを使用して一部のポリシー ファイルを指定し、実行時に追加のポリシー ファイルを関連付けます。
  4. JWS ファイルに @Policy または @Policies JWS アノテーションを追加した場合は、通常の反復的開発プロセスの一環として、Web サービスをコンパイルして再デプロイします。
  5. 『JAX-RPC を使用した WebLogic Web サービスの開始』の「WebLogic Web サービスの開発」を参照してください。

  6. 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 のコンフィグレーション」を参照してください。

 


UserDataConstraint による転送レベルのセキュリティのコンフィグレーション : 主な手順 (JAX-RPC のみ)

UserDataConstraint アノテーションでは、Web サービスが HTTPS 転送を使用して呼び出されることを要求します。

JWS ファイルで UserDataConstraint アノテーションを使用して転送レベルの Web サービス セキュリティをコンフィグレーションするには、次の手順に従います。

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

    WebLogic Server コア セキュリティ サブシステムに対して、双方向および一方向の SSL をコンフィグレーションする手順については、『WebLogic Server のセキュリティ』の「SSL のコンフィグレーション」を参照してください。

  3. Web サービスを実装する JWS ファイル内に @weblogic.jws.security.UserDataConstraint アノテーションを追加し、Web サービスが HTTPS 転送を使用して呼び出されることを要求します。
  4. 詳細については、『WebLogic Web サービス リファレンス』の「weblogic.jws.security.UserDataConstraint」を参照してください。

  5. 通常の反復的な開発プロセスの一部として、Web サービスを再コンパイルして再デプロイします。
  6. 『JAX-RPC を使用した WebLogic Web サービスの開始』の「WebLogic Web サービスの開発」を参照してください。

  7. clientgen Ant タスクを呼び出す build.xml ファイルを更新して、Web サービスの JAX-RPC スタブの生成に、デプロイされているサービスの動的 WSDL ではなく、静的 WSDL を使用するようにします。
  8. この場合に、clientgen が動的 WSDL からスタブを生成できない理由は、@UserDataConstraint アノテーションを指定する際に、すべてのクライアント アプリケーションで、clientgen を含むトラストストアを指定することが必要であるためです。しかし現在、clientgen でトラストストアを指定する方法はありません。したがって、Ant タスクは、動的 WSDL と同じ方法で Web サービスを記述する静的な WSDL からクライアント コンポーネントを生成しなければなりません。

  9. 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 のコンフィグレーション

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 型のスタブ) に転送情報を設定します。
  4. 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


ページの先頭       前  次