![]() ![]() ![]() ![]() |
転送レベルのセキュリティとは、セキュア ソケット レイヤ (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 を介したクライアント証明書を予期していることを示すアサーションが含まれています。
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken/>
</wsp:Policy>
</sp:TransportToken>
双方向 SSL が必要な場合は、コード リスト 3-2 のように、RequireClientCertificate アサーションも使用します。
<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 基本認証の両方を必要としています。
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken>
<wsp:Policy>
<sp:HttpBasicAuthentication/>
</wsp:Policy>
</sp:HttpsToken>
</wsp:Policy>
</sp:TransportToken>
1 つまたは複数のポリシー ファイルを使用して転送レベルの Web サービス セキュリティをコンフィグレーションするには、次の手順に従います。
一方向の SSL (WebLogic Server がクライアント アプリケーションに証明書を提示する必要がある)、または双方向の SSL (クライアント アプリケーションと WebLogic Server が両方とも互いに証明書を提示する必要がある) のいずれかをコンフィグレーションできます。
WebLogic Server コア セキュリティ サブシステムに対して、双方向および一方向の SSL をコンフィグレーションする手順については、『WebLogic Server のセキュリティ』の「SSL のコンフィグレーション」を参照してください。
@Policy
または @Policies
JWS アノテーションを使用するか、Administration Console を使用して実行時にポリシー ファイルを関連付けます。あるいは、アノテーションを使用して一部のポリシー ファイルを指定し、実行時に追加のポリシー ファイルを関連付けます。 @Policy
または @Policies
JWS アノテーションを追加した場合は、通常の反復的開発プロセスの一環として、Web サービスをコンパイルして再デプロイします。
『JAX-RPC を使用した WebLogic Web サービスの開始』の「WebLogic Web サービスの開発」を参照してください。
-Djava.protocol.handler.pkgs=weblogic.net
-Dweblogic.security.SSL.trustedCAKeyStore=trustStore
trustStore
には、信頼性のある証明書 (そのうちの 1 つはサーバの証明書でなければならない) のリストを格納するクライアントサイドのトラストストアの名前を指定します。ホスト名検証を無効にするには、次のプロパティも指定します。
-Dweblogic.security.SSL.ignoreHostnameVerification=true
-Djavax.net.ssl.trustStore=trustStore
trustStore
には、信頼性のある証明書 (そのうちの 1 つはサーバの証明書でなければならない) のリストを格納するクライアントサイドのトラストストアの名前を指定します。ホスト名検証を無効にするには、次のプロパティも指定します。
-Dweblogic.wsee.client.ssl.stricthostchecking=false
双方向 SSL の詳細については、「クライアント アプリケーションでの双方向 SSL のコンフィグレーション」を参照してください。
UserDataConstraint
アノテーションでは、Web サービスが HTTPS 転送を使用して呼び出されることを要求します。
JWS ファイルで UserDataConstraint
アノテーションを使用して転送レベルの Web サービス セキュリティをコンフィグレーションするには、次の手順に従います。
一方向の SSL (WebLogic Server がクライアント アプリケーションに証明書を提示する必要がある)、または双方向の SSL (クライアント アプリケーションと WebLogic Server が両方とも互いに証明書を提示する必要がある) のいずれかをコンフィグレーションできます。
WebLogic Server コア セキュリティ サブシステムに対して、双方向および一方向の SSL をコンフィグレーションする手順については、『WebLogic Server のセキュリティ』の「SSL のコンフィグレーション」を参照してください。
@weblogic.jws.security.UserDataConstraint
アノテーションを追加し、Web サービスが HTTPS 転送を使用して呼び出されることを要求します。
詳細については、『WebLogic Web サービス リファレンス』の「weblogic.jws.security.UserDataConstraint」を参照してください。
『JAX-RPC を使用した WebLogic Web サービスの開始』の「WebLogic Web サービスの開発」を参照してください。
clientgen
Ant タスクを呼び出す build.xml
ファイルを更新して、Web サービスの JAX-RPC スタブの生成に、デプロイされているサービスの動的 WSDL ではなく、静的 WSDL を使用するようにします。
この場合に、clientgen
が動的 WSDL からスタブを生成できない理由は、@UserDataConstraint
アノテーションを指定する際に、すべてのクライアント アプリケーションで、clientgen
を含むトラストストアを指定することが必要であるためです。しかし現在、clientgen
でトラストストアを指定する方法はありません。したがって、Ant タスクは、動的 WSDL と同じ方法で Web サービスを記述する静的な WSDL からクライアント コンポーネントを生成しなければなりません。
-Djava.protocol.handler.pkgs=weblogic.net
-Dweblogic.security.SSL.trustedCAKeyStore=trustStore
trustStore
には、信頼性のある証明書 (そのうちの 1 つはサーバの証明書でなければならない) のリストを格納するクライアントサイドのトラストストアの名前を指定します。ホスト名検証を無効にするには、次のプロパティも指定します。
-Dweblogic.security.SSL.ignoreHostnameVerification=true
-Djavax.net.ssl.trustStore=trustStore
trustStore
には、信頼性のある証明書 (そのうちの 1 つはサーバの証明書でなければならない) のリストを格納するクライアントサイドのトラストストアの名前を指定します。ホスト名検証を無効にするには、次のプロパティも指定します。
-Dweblogic.wsee.client.ssl.stricthostchecking=false
双方向 SSL の詳細については、「クライアント アプリケーションでの双方向 SSL のコンフィグレーション」を参照してください。
WebLogic Server で双方向 SSL をコンフィグレーションした場合は、一方向 SSL で必要なように WebLogic Server がクライアント アプリケーションに証明書を提示するだけでなく、クライアント アプリケーションも WebLogic Server に証明書を提示する必要があります。さらに、以下の要件も満たしている必要があります。
J2SE の SSL パッケージでは、クライアントのプライベート キーのパスワードはクライアントのキーストアのパスワードと同じでなければならない。このため、クライアントのキーストアには 1 つのプライベート キーと X.509 証明書のペアしか格納できません。
この手順には、Cert Gen ユーティリティまたは Sun Microsystems の keytool ユーティリティを使用できます。開発が目的の場合は、keytool
ユーティリティを使用すると簡単に開始できます。
『WebLogic Server のセキュリティ』の「プライベート キー、デジタル証明書、信頼性のある認証局の取得」を参照してください。
-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 実装について説明します。 |
SSLAdapter のカスタム実装を使用すると、信頼性のあるメッセージングまたはバッファリングを使用するときに、クライアントとサーバの間の SSL 接続を確立するために必要なクライアント証明書や他のサービスを提供することができます。信頼性のあるメッセージングおよびバッファリングのサブシステムは、SSL 接続の間にリクエストの状態を保持します。その際に、サブシステムは接続の確立に使用されたカスタム SSLAdapter のインスタンスを保持します。
リクエストが永続性から復元されるとき、リクエストと一緒に保存されていたカスタム SSLAdapter オブジェクトを適切に復元するために、永続性機能はカスタム SSLAdapter クラスにアクセスする必要があります。これを可能にするには、(サーバにデプロイされたアプリケーションの内部ではなく) サーバのシステム CLASSPATH を通じて、カスタム SSLAdapter クラスを提供する必要があります。
カスタム SSLAdapter は SSLAdapter を拡張し、次の手順でインストールして有効にする必要があります。
weblogic.wsee.connection.transport.https.HttpsTransportInfo
のインスタンスを作成します。HttpsTransportInfo.setSSLAdapter(SSLAdapter adapter)
を呼び出して、その転送情報にカスタム SSL アダプタを設定します。(javax.xml.rpc.Stub 型のスタブ)
に転送情報を設定します。stub._setProperty(weblogic.wsee.connection.soap.SoapClientConnection.TRANSPORT_INFO_PROPERTY,ti);
この手順に従い、カスタム SSLAdapter クラスをシステム CLASSPATH で提供しない場合は、ClassNotFoundException
例外が生成されます。
java.io.IOException: java.lang.ClassNotFoundException:
examples.webservices.client.ServiceBase$TestSSLAdapter
![]() ![]() ![]() |