この章では、OWLCS Parlay X Web Services のアーキテクチャ、セキュリティ、およびインストールについて説明します。この章の内容は以下のとおりです。
クライアント アプリケーションのアーキテクチャでは、Web サービスの 1 つのクライアントが、システムの多数のエンド ユーザに代わって機能します。
複数のユーザが同じ Web サービス クライアントに同時に接続でき、クライアントはこれらのユーザの代わりに Web サービスを起動します。次の使用時のガイドラインに注意してください。
セキュリティ – Web サービスを実行している OWLCS Web サーバは、エンド ユーザではなくクライアントを認証します。クライアントは信頼できるエンティティであり、クライアントがいったん認証されると、クライアントのすべてのエンド ユーザは認証済みであると見なされます。このため、エンド ユーザを認証するタスクは Web サービス クライアントが行います。クライアントが正しく認証されるためには、エンド ユーザが事前に決定された認証資格を使用して接続する必要があります。
Web クライアントはすべての Web サービスを起動する必要はない – つまり、Web クライアントは、SendMessage Web サービスに対してのみメソッドを起動できるため、その他の Web サービスを気にする必要はありません。ただし、クライアント アプリケーションのニーズに応じてその目的を達成するために、異なる Web サービスに対し、特定のメソッドを特定の順序で起動する場合があります。たとえば、メッセージを送信するクライアント アプリケーションが、送信されたすべてのメッセージのメッセージ通知を受け取る必要もある場合は、送信されたメッセージの通知を受け取る前に、MessageNotificationManager インタフェースの startMessageNotification メソッドを最初に呼び出す必要があります。
デフォルトでは、すべてのデプロイされた OWLCS Web サービスは保護されていません。プロダクション環境にデプロイされるサービスでは、Web サービス セキュリティを有効にする必要があります。
OWLCS では、OWLCS Web サービスを保護する Oracle Web Services Manager の WS-Security ポリシーの使用がサポートされています。Oracle Web Services Manager の詳細については、『Oracle Fusion Middleware Oracle WebLogic Server Web サービスのセキュリティ』の「Using Oracle Web Service Security Policies」を参照してください。
OWLCS Web サービスで推奨されるセキュリティ コンフィグレーションでは、Security Assertion Markup Language (SAML) トークンを使用して、Web サービス クライアントと OWLCS の間で ID の受け渡しを行います。SAML トークンを使用すると、Web サービス クライアントがユーザ名とパスワードを OWLCS に渡す代わりに、証明書の交換を通じてクライアントと OWLCS の間の信頼関係が確立されます。このようなキーストア コンフィグレーションが作成されると、Web サービス クライアントはユーザ ID のみを渡して、ユーザが適切に認証されていることを保証します。
OWLCS Web サービスで使用が推奨されるポリシーは、以下のとおりです。
oracle/wss11_saml_token_with_message_protection_service_policy (サーバ側)
oracle/wss11_saml_token_with_message_protection_client_policy (クライアント側)
各種の Web サービスには、クライアント側で実行される、対応する通知 Web サービス (MessageNotification、PresenceNotification) が含まれており、これらは該当するイベントが発生すると通知 (メッセージ配信ステータス、メッセージの受信、プレゼンス ステータスの変更) を受け取ります。この実装では、クライアントへの通知時に、デフォルトで Web サービス セキュリティ (WS-Security) が使用されません。つまり、サーバでは、クライアント側で実行される通知 Web サービスで WS-Security が使用されないことを想定し、通知を送信する際に自身の認証を試行しません。クライアント側で WS-Security を有効にすると、通知 SOAP リクエストに必要なヘッダが含まれていないため、サーバからの通知は失敗します。
OWLCS Web サービスのポリシーを有効にするには、『Oracle Fusion Middleware Oracle WebLogic Server Web サービスのセキュリティ』の「Configuring Oracle WSM Security Policies in Administration Console」の手順に従って、ポリシー oracle/wss11_saml_token_with_message_protection_service_policy
を選択します。保護する必要のあるサービスごとに、このコンフィグレーションを繰り返す必要があります。
Web サービス クライアントのセキュリティはプログラムで有効にする必要があります。『Oracle WebLogic Communication Services 開発者ガイド』に記述されたクライアント ライブラリを使用する場合は、クライアント オブジェクトの作成時に WS-Security ポリシー コンフィグレーションが提供されます。クライアントのコンストラクタは型 Map<String, Object>
の引数を取ります。 SAML 認証を使用する場合は、通常、エンドポイント アドレスなどの他の必須プロパティのほかに、キーと値の組み合わせ (表 18-1) をコンフィグレーション マップに追加する必要があります。
表 18-1 クライアントのセキュリティ キー
キー | 型 | 通常の値 |
---|---|---|
|
String[] |
|
|
String |
|
|
String |
(省略可能) 対象となるサービスのキーストア エリアス。「クライアントのエリアス」を参照してください。 |
例 18-1 Web サービス クライアントのセキュリティ
import oracle.sdp.parlayx.presence.consumer.PresenceConsumerClient; ... Map<String, Object> config = new HashMap<String, Object>(); config.put(javax.xml.ws.BindingProvider.ENDPOINT_ADDRESS_PROPERTY, owlcs_url); config.put(oracle.sdp.parlayx.ParlayXConstants.POLICIES, new String[] {"oracle/wss11_saml_token_with_message_protection_client_policy"}); config.put(javax.xml.ws.BindingProvider.USERNAME_PROPERTY, "test.user1"); PresenceConsumerClient presenceClient = new PresenceConsumerClient(config);
推奨される WS-Security ポリシーを使用するには、OWSM に必要なパブリック キーおよびプライベート キー情報が含まれているキーストアをコンフィグレーションする必要があります。キーストアおよび該当する資格ストア エントリをコンフィグレーションする方法については、『Oracle Fusion Middleware Oracle WebLogic Server Web サービスのセキュリティ』の「Configuring the Credential Store Using WLST」を参照してください。
Web サービス クライアントと OWLCS サーバが同じドメイン内にある場合は、キーストアと資格ストアが共有されます。
Web サービス クライアントと OWLCS サーバが異なるドメイン内にある場合は、OWLCS のパブリック キーをクライアント ドメインのキーストアにインポートし、クライアント ドメインのパブリック キーを OWLCS のキーストアにインポートする必要があります。
ここで推奨される SAML ポリシーなどの特定の WS-Security ポリシーを使用する場合、クライアントではサーバのパブリック キーを使用して Web サービス リクエストを暗号化する必要があります。ただし、1 つのドメインにつきコンフィグレーションされているキーストアは通常 1 つのみです。このため、あるドメインの Web サービス クライアントが他の複数のドメイン内の Web サービスと通信するようなときは、OWSM で使用されるデフォルトのキーストア エントリをオーバーライドする必要がある場合があります。
たとえば、あるドメインに、SOA Web サービスに対する Web サービス クライアントであるアプリケーション「A」と、OWLCS Web サービスに対する Web サービス クライアントであるアプリケーション「B」があるとします。この場合、A のリクエストは SOA ドメインのパブリック キーを使用して暗号化し、B のリクエストは OWLCS ドメインのパブリック キーを使用して暗号化する必要があります。これを行うには、OWSM で使用されるキーストア エリアスを各リクエストでオーバーライドします。
2 つのサーバ ドメインのパブリック キーを、それぞれ異なるキーストア エリアスを使用してクライアント ドメインのキーストアにインポートします。たとえば、OWLCS パブリック キーにエリアス「owlcs_public_key」、SOA パブリック キーにエリアス「soa_public_key」を使用してインポートします。
OWLCS Web サービス クライアントを作成する場合に、受信者のキーストア エリアス パラメータを指定します。キーを oracle.wsm.security.util.SecurityConstants.Config.KEYSTORE_RECIPIENT_ALIAS_PROPERTY
に設定し、値を「owlcs_public_key」に設定します (例 18-2 を参照)。
例 18-2 クライアントのエリアス
import oracle.sdp.parlayx.presence.consumer.PresenceConsumerClient; ... Map<String, Object> config = new HashMap<String, Object>(); config.put(javax.xml.ws.BindingProvider.ENDPOINT_ADDRESS_PROPERTY, owlcs_url); config.put(oracle.sdp.parlayx.ParlayXConstants.POLICIES, new String[] {"oracle/wss11_saml_token_with_message_protection_client_policy"}); config.put(javax.xml.ws.BindingProvider.USERNAME_PROPERTY, "test.user1"); config.put(oracle.wsm.security.util.SecurityConstants.Config.KEYSTORE_RECIPIENT_ALIAS_PROPERTY, "owlcs_public_key") PresenceConsumerClient presenceClient = new PresenceConsumerClient(config);
SOA などの Web サービス クライアントでも同様にキーストア エリアスをオーバーライドする必要がありますが、厳密なメカニズムは異なる場合があります。たとえば、JAX-WS クライアント スタブ ディレクトリを使用している場合は、オーバーライド プロパティを JAX-WS リクエスト コンテキストに追加できます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server Web サービスのセキュリティ』の「Policy Configuration Overrides for the Web Service Client」を参照してください。
Web サービスは標準の .ear ファイルとしてパッケージ化されており、Enterprise Manager から任意の他の Web サービスと同様にデプロイできます。.ear ファイルには、2 つのインタフェースを実装する 2 つの .war ファイルが含まれています。Web サービスは、oracle.sdp.client
、oracle.sdp.platform
、oracle.sdp.presencecommons
という共有ライブラリに依存しています。
クライアント アプリケーションでは、OWLCS で提供される oracle.sdp.client 共有ライブラリをインポート (およびコンパイル) する必要があります。この場合、プロジェクトに parlayx.jar をインポートします。
oracle.sdp.client 共有ライブラリは、これに対してコンパイルするだけでなく、対象のランタイム環境で使用可能にする必要があります (つまり、oracle.sdp.client は対象の Weblogic Server に共有ライブラリとしてデプロイされます)。
これらの共有ライブラリ以外に、OWLCS のインストールには通知 Web サービス用の war ファイルが含まれています。これらの war ファイルには、開発者がさまざまな Web サービスの通知を有効にするためにインポートする必要のあるすべての jar ファイルが含まれています。
messagingwsnotification-<version>.war – メッセージ配信ステータスおよびメッセージ受信の通知を受け取るクライアントを作成する場合にインポートする必要のある jar を含む、デプロイ可能な war ファイル。OWLCS サーバがメッセージング通知 Web サービスを起動できるように、クライアント アプリケーションと共にこの war もデプロイする必要があります。
presencewsnotification-<version>.war – プレゼンス ステータス変更の通知を受け取るクライアントを作成する場合にインポートする必要のある jar を含む、デプロイ可能な war ファイル。OWLCS サーバがプレゼンス通知 Web サービスを起動できるように、クライアント アプリケーションと共にこの war もデプロイする必要があります。