このトピックは IBM Business Process Manager Advanced 構成にのみ適用されます。

SOAP ヘッダーの伝搬

SOAP メッセージを処理するときは、 受信したメッセージの特定の SOAP ヘッダー情報にアクセスすること、 SOAP ヘッダーを持つメッセージが特定の値とともに送信されていることを確認すること、 または SOAP ヘッダーがモジュールを通過できるようにすることが必要になる場合があります。

Integration Designer で Web サービス・バインディングを構成する際に、SOAP ヘッダーを伝搬させることを指定できます。
  • エクスポートで要求を受信する場合、またはインポートで応答を受信する場合は、 SOAP ヘッダー情報にアクセスして、モジュール内のロジックをヘッダー値に基づくようにし、 それらのヘッダーを変更できます。
  • エクスポートから要求を送信する場合、またはインポートから応答を送信する場合は、 SOAP ヘッダーをこれらのメッセージに含めることができます。
伝搬される SOAP ヘッダーの形式、およびそれが存在するかどうかは、インポートまたはエクスポートで構成されたポリシー・セットの 影響を受ける場合があります (#cadm_webservicebindingpropagate__secpolicy を参照)。

インポートまたはエクスポートの SOAP ヘッダーの伝搬を構成するには、 (Integration Designer の「プロパティー」ビューから) 「プロトコル・ヘッダーの伝搬」タブを選択し、 必要なオプションを選択します。

WS-Addressing ヘッダー

WS-Addressing ヘッダーは、Web サービス (JAX-WS) バインディングにより伝搬できます。

WS-Addressing ヘッダーを伝搬する場合は、以下の情報に注意してください。
  • WS-Addressing ヘッダーの伝搬を有効にした場合、以下の状況では、ヘッダーはモジュール内に伝搬されます。
    • 要求がエクスポートで受信される場合
    • 応答がインポートで受信される場合
  • WS-Addressing ヘッダーは、IBM® Integration Designer からのアウトバウンド・メッセージ内には伝搬されません (つまり、要求がインポートから送信される場合、または応答がエクスポートから送信される場合、 ヘッダーは伝搬されません)。

WS-Security ヘッダー

WS-Security ヘッダーは、Web サービス (JAX-WS) バインディング、および Web サービス (JAX-RPC) バインディングの両方で伝搬できます。

Web サービスの WS-Security 仕様には、メッセージ保全性、メッセージ機密性、および単一メッセージ認証を通じて保護品質を提供するための SOAP メッセージングの拡張が記述されています。 これらのメカニズムを使用することにより、さまざまなセキュリティー・モデルと暗号化テクノロジーに対応できます。

WS-Security ヘッダーを伝搬する場合は、 以下の情報に注意してください。
  • WS-Security ヘッダーの伝搬を有効にした場合、 以下の状況では、ヘッダーはモジュールを通過して伝搬されます。
    • 要求がエクスポートで受信される場合
    • 要求がインポートから送信される場合
    • 応答がインポートで受信される場合
  • デフォルトでは、応答がエクスポートから送信される場合は、ヘッダーは伝搬されません。 ただし、JVM プロパティー WSSECURITY.ECHO.ENABLEDtrue を設定すると、応答がエクスポートから送信される場合にヘッダーは伝搬されます。 この場合、要求パスの WS-Security ヘッダーが変更されないときは、 要求から応答に WS-Security ヘッダーが自動的にエコーされることがあります。
  • 要求に対してインポートから送信される SOAP メッセージ、 または応答に対してエクスポートから送信される SOAP メッセージの厳格な形式は、 最初に受信した SOAP メッセージとは正確に一致しない場合があります。 このため、すべてのデジタル署名は無効になると想定する必要があります。 送信メッセージでデジタル署名が必要な場合は、 適切なセキュリティー・ポリシー・セットを使用してデジタル署名を設定し、 受信メッセージのデジタル署名に関連する WS-Security ヘッダーをモジュール内で削除する必要があります。

WS-Security ヘッダーを伝搬するには、WS-Security スキーマをアプリケーション・モジュールに組み込む必要があります。 スキーマを組み込む手順については、WS-Security スキーマのアプリケーション・モジュールへの組み込みを参照してください。

ヘッダーの伝搬方法

ヘッダーの伝搬方法は、インポート・バインディングまたはエクスポート・バインディングのセキュリティー・ポリシー設定に依存します。表 1 を参照してください。
表 1. セキュリティー・ヘッダーを渡す方法
  セキュリティー・ポリシーを使用しないエクスポート・バインディング セキュリティー・ポリシーを使用したエクスポート・バインディング
セキュリティー・ポリシーを使用しないインポート・バインディング セキュリティー・ヘッダーは、そのままモジュールを通過します。 暗号化解除はされません。

ヘッダーは、受信時と同じ形式でアウトバウンドに送信されます。

デジタル署名は、無効になる場合があります。

セキュリティー・ヘッダーは、暗号化解除されてモジュールを通過します。このとき、署名の検証と認証が実行されます。

暗号化解除されたヘッダーは、アウトバウンドに送信されます。

デジタル署名は、無効になる場合があります。

セキュリティー・ポリシーを使用したインポート・バインディング セキュリティー・ヘッダーは、そのままモジュールを通過します。 暗号化解除はされません。

ヘッダーは、インポートに伝搬してはなりません。 そうしないと、重複のためにエラーが発生します。

セキュリティー・ヘッダーは、暗号化解除されてモジュールを通過します。このとき、署名の検証と認証が実行されます。

ヘッダーは、インポートに伝搬してはなりません。 そうしないと、重複のためにエラーが発生します。

適切なポリシー・セットをエクスポート・バインディングとインポート・バインディングで 構成してください。なぜなら、これにより、サービス・プロバイダーの構成または QoS 要件に対する変更と、 サービス・リクエスターが分離されるからです。 標準 SOAP ヘッダーをモジュールで可視にすると、モジュールの処理 (ロギングやトレースなど) に影響を与えることができます。 モジュールを通過して受信メッセージから送信メッセージに SOAP ヘッダーを伝搬すると、 モジュールを分離する利点が減少します。

標準ヘッダー (WS-Security ヘッダーなど) が通常生成されるポリシー・セットがインポートまたはエクスポートに 関連付けられているときは、標準ヘッダーをインポート (要求時) またはエクスポート (応答時) に伝搬してはなりません。そうしないと、ヘッダーの重複によりエラーが発生します。 代わりに、ヘッダーを明示的に削除するか、 もしくはプロトコル・ヘッダーが伝搬されないようにインポート・バインディングまたはエクスポート・バインディングを構成する必要があります。

SOAP ヘッダーへのアクセス

SOAP ヘッダーを含むメッセージが Web サービスのインポートまたはエクスポートから受信されると、 それらのヘッダーは、サービス・メッセージ・オブジェクト (SMO) のヘッダー・セクションに配置されます。 ヘッダー情報にアクセスするには、『SMO の SOAP ヘッダー情報へのアクセス』を参照してください。

WS-Security スキーマのアプリケーション・モジュールへの組み込み

以下のステップでは、スキーマをアプリケーション・モジュールに組み込むステップを説明します。
  • Integration Designer が実行中のコンピューターがインターネットにアクセスできる場合は、 以下のステップを実行します。
    1. ビジネス・インテグレーション・パースペクティブで、プロジェクトの「依存関係」を選択します。
    2. 「事前定義リソース」を展開し、 「WS-Security 1.0 スキーマ・ファイル」または 「WS-Security 1.1 スキーマ・ファイル」を選択して、 スキーマをモジュールにインポートします。
    3. プロジェクトをクリーンにし再ビルドします。
  • Integration Designer を実行中のコンピューターがインターネットにアクセスできない場合は、 インターネットにアクセスできる 2 番目のコンピューターにスキーマをダウンロードします。 その後、Integration Designer を実行中のコンピューターにスキーマをコピーします。
    1. インターネットにアクセスできるコンピューターから、以下の手順でリモート・スキーマをダウンロードします。
      1. 「ファイル」 > 「インポート」 > 「ビジネス・インテグレーション」 > 「WSDL および XSD」をクリックします。
      2. 「リモート WSDL または XSD ファイル」を選択します。
      3. 以下のスキーマをインポートします。
        • 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
    2. インターネットにアクセスできないコンピューターにスキーマをコピーします。
    3. インターネットにアクセスできないコンピューターから、以下の手順でスキーマをインポートします。
      1. 「ファイル」 > 「インポート」 > 「ビジネス・インテグレーション」 > 「WSDL および XSD」をクリックします。
      2. 「ローカル WSDL (Local WSDL)」または「XSD ファイル (XSD file)」を選択します。
    4. oasis-wss-wssecurity_secext-1.1.xsd のスキーマの場所を以下の手順で変更します。
      1. workplace_location/module_name/StandardImportFilesGen/oasis-wss-wssecurity-secext-1.1.xsd でスキーマを開きます。
      2. 変更前:
        <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'/>
      3. 変更前:
        <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'/>
    5. oasis-200401-wss-wssecurity-secext-1.0.xsd のスキーマの場所を以下の手順で変更します。
      1. workplace_location/module_name/StandardImportFilesGen/oasis-200401-wss-wssecurity-secext-1.0.xsd でスキーマを開きます。
      2. 変更前:
        <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"/>
    6. プロジェクトをクリーンにし再ビルドします。