
SOAP ヘッダーの伝搬
SOAP メッセージを処理するときは、 受信したメッセージの特定の SOAP ヘッダー情報にアクセスすること、 SOAP ヘッダーを持つメッセージが特定の値とともに送信されていることを確認すること、 または SOAP ヘッダーがモジュールを通過できるようにすることが必要になる場合があります。
- エクスポートで要求を受信する場合、またはインポートで応答を受信する場合は、 SOAP ヘッダー情報にアクセスして、モジュール内のロジックをヘッダー値に基づくようにし、 それらのヘッダーを変更できます。
- エクスポートから要求を送信する場合、またはインポートから応答を送信する場合は、 SOAP ヘッダーをこれらのメッセージに含めることができます。
インポートまたはエクスポートの SOAP ヘッダーの伝搬を構成するには、 (Integration Designer の「プロパティー」ビューから) 「プロトコル・ヘッダーの伝搬」タブを選択し、 必要なオプションを選択します。
WS-Addressing ヘッダー
WS-Addressing ヘッダーは、Web サービス (JAX-WS) バインディングにより伝搬できます。
- WS-Addressing ヘッダーの伝搬を有効にした場合、以下の状況では、ヘッダーはモジュール内に伝搬されます。
- 要求がエクスポートで受信される場合
- 応答がインポートで受信される場合
- WS-Addressing ヘッダーは、IBM® Integration Designer からのアウトバウンド・メッセージ内には伝搬されません (つまり、要求がインポートから送信される場合、または応答がエクスポートから送信される場合、 ヘッダーは伝搬されません)。
WS-Security ヘッダー
WS-Security ヘッダーは、Web サービス (JAX-WS) バインディング、および Web サービス (JAX-RPC) バインディングの両方で伝搬できます。
Web サービスの WS-Security 仕様には、メッセージ保全性、メッセージ機密性、および単一メッセージ認証を通じて保護品質を提供するための SOAP メッセージングの拡張が記述されています。 これらのメカニズムを使用することにより、さまざまなセキュリティー・モデルと暗号化テクノロジーに対応できます。
- WS-Security ヘッダーの伝搬を有効にした場合、
以下の状況では、ヘッダーはモジュールを通過して伝搬されます。
- 要求がエクスポートで受信される場合
- 要求がインポートから送信される場合
- 応答がインポートで受信される場合
- デフォルトでは、応答がエクスポートから送信される場合は、ヘッダーは伝搬されません。 ただし、JVM プロパティー WSSECURITY.ECHO.ENABLED に true を設定すると、応答がエクスポートから送信される場合にヘッダーは伝搬されます。 この場合、要求パスの WS-Security ヘッダーが変更されないときは、 要求から応答に WS-Security ヘッダーが自動的にエコーされることがあります。
- 要求に対してインポートから送信される SOAP メッセージ、 または応答に対してエクスポートから送信される SOAP メッセージの厳格な形式は、 最初に受信した SOAP メッセージとは正確に一致しない場合があります。 このため、すべてのデジタル署名は無効になると想定する必要があります。 送信メッセージでデジタル署名が必要な場合は、 適切なセキュリティー・ポリシー・セットを使用してデジタル署名を設定し、 受信メッセージのデジタル署名に関連する WS-Security ヘッダーをモジュール内で削除する必要があります。
WS-Security ヘッダーを伝搬するには、WS-Security スキーマをアプリケーション・モジュールに組み込む必要があります。 スキーマを組み込む手順については、WS-Security スキーマのアプリケーション・モジュールへの組み込みを参照してください。
ヘッダーの伝搬方法
| セキュリティー・ポリシーを使用しないエクスポート・バインディング | セキュリティー・ポリシーを使用したエクスポート・バインディング | |
|---|---|---|
| セキュリティー・ポリシーを使用しないインポート・バインディング | セキュリティー・ヘッダーは、そのままモジュールを通過します。
暗号化解除はされません。 ヘッダーは、受信時と同じ形式でアウトバウンドに送信されます。 デジタル署名は、無効になる場合があります。 |
セキュリティー・ヘッダーは、暗号化解除されてモジュールを通過します。このとき、署名の検証と認証が実行されます。 暗号化解除されたヘッダーは、アウトバウンドに送信されます。 デジタル署名は、無効になる場合があります。 |
| セキュリティー・ポリシーを使用したインポート・バインディング | セキュリティー・ヘッダーは、そのままモジュールを通過します。
暗号化解除はされません。 ヘッダーは、インポートに伝搬してはなりません。 そうしないと、重複のためにエラーが発生します。 |
セキュリティー・ヘッダーは、暗号化解除されてモジュールを通過します。このとき、署名の検証と認証が実行されます。 ヘッダーは、インポートに伝搬してはなりません。 そうしないと、重複のためにエラーが発生します。 |
適切なポリシー・セットをエクスポート・バインディングとインポート・バインディングで 構成してください。なぜなら、これにより、サービス・プロバイダーの構成または QoS 要件に対する変更と、 サービス・リクエスターが分離されるからです。 標準 SOAP ヘッダーをモジュールで可視にすると、モジュールの処理 (ロギングやトレースなど) に影響を与えることができます。 モジュールを通過して受信メッセージから送信メッセージに SOAP ヘッダーを伝搬すると、 モジュールを分離する利点が減少します。
標準ヘッダー (WS-Security ヘッダーなど) が通常生成されるポリシー・セットがインポートまたはエクスポートに 関連付けられているときは、標準ヘッダーをインポート (要求時) またはエクスポート (応答時) に伝搬してはなりません。そうしないと、ヘッダーの重複によりエラーが発生します。 代わりに、ヘッダーを明示的に削除するか、 もしくはプロトコル・ヘッダーが伝搬されないようにインポート・バインディングまたはエクスポート・バインディングを構成する必要があります。
SOAP ヘッダーへのアクセス
SOAP ヘッダーを含むメッセージが Web サービスのインポートまたはエクスポートから受信されると、 それらのヘッダーは、サービス・メッセージ・オブジェクト (SMO) のヘッダー・セクションに配置されます。 ヘッダー情報にアクセスするには、『SMO の SOAP ヘッダー情報へのアクセス』を参照してください。
WS-Security スキーマのアプリケーション・モジュールへの組み込み
- Integration Designer が実行中のコンピューターがインターネットにアクセスできる場合は、
以下のステップを実行します。
- ビジネス・インテグレーション・パースペクティブで、プロジェクトの「依存関係」を選択します。
- 「事前定義リソース」を展開し、 「WS-Security 1.0 スキーマ・ファイル」または 「WS-Security 1.1 スキーマ・ファイル」を選択して、 スキーマをモジュールにインポートします。
- プロジェクトをクリーンにし再ビルドします。
- Integration Designer を実行中のコンピューターがインターネットにアクセスできない場合は、
インターネットにアクセスできる 2 番目のコンピューターにスキーマをダウンロードします。
その後、Integration Designer を実行中のコンピューターにスキーマをコピーします。
- インターネットにアクセスできるコンピューターから、以下の手順でリモート・スキーマをダウンロードします。
- をクリックします。
- 「リモート WSDL または XSD ファイル」を選択します。
- 以下のスキーマをインポートします。
- http://www.w3.org/2003/05/soap-envelope/
- http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/xenc-schema.xsd
- http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd
- インターネットにアクセスできないコンピューターにスキーマをコピーします。
- インターネットにアクセスできないコンピューターから、以下の手順でスキーマをインポートします。
- をクリックします。
- 「ローカル WSDL (Local WSDL)」または「XSD ファイル (XSD file)」を選択します。
- oasis-wss-wssecurity_secext-1.1.xsd のスキーマの場所を以下の手順で変更します。
- workplace_location/module_name/StandardImportFilesGen/oasis-wss-wssecurity-secext-1.1.xsd でスキーマを開きます。
- 変更前:
<xs:import namespace='http://www.w3.org/2003/05/soap-envelope' schemaLocation='http://www.w3.org/2003/05/soap-envelope/'/>これを次のように変更します。
<xs:import namespace='http://www.w3.org/2003/05/soap-envelope' schemaLocation='../w3/_2003/_05/soap_envelope.xsd'/> - 変更前:
<xs:import namespace='http://www.w3.org/2001/04/xmlenc#' schemaLocation='http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/xenc-schema.xsd'/>これを次のように変更します。
<xs:import namespace='http://www.w3.org/2001/04/xmlenc#' schemaLocation='../w3/tr/_2002/rec_xmlenc_core_20021210/xenc-schema.xsd'/>
- oasis-200401-wss-wssecurity-secext-1.0.xsd のスキーマの場所を以下の手順で変更します。
- workplace_location/module_name/StandardImportFilesGen/oasis-200401-wss-wssecurity-secext-1.0.xsd でスキーマを開きます。
- 変更前:
<xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/>これを次のように変更します。
<xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../w3/tr/_2002/rec_xmldsig_core_20020212/xmldsig-core-schema.xsd"/>
- プロジェクトをクリーンにし再ビルドします。
- インターネットにアクセスできるコンピューターから、以下の手順でリモート・スキーマをダウンロードします。