Menu Close

6.2. SOAP メッセージの保護

6.2.1. SOAP メッセージの保護の概要

概要

トランスポート層ではなく SOAP エンコーディング層でメッセージ保護を適用することにより、より柔軟な範囲の保護ポリシーにアクセスできます。特に、SOAP 層はメッセージ構造を認識しているため、たとえば、実際に保護が必要なヘッダーのみを暗号化して署名することにより、より細かいレベルの粒度で保護を適用できます。この機能により、より高度な多層アーキテクチャーをサポートできます。たとえば、1 つのプレーンテキストヘッダーが (安全なイントラネット内にある) 中間層を対象とし、暗号化されたヘッダーが (安全でないパブリックネットワークを介して到達する) 最終的な宛先を対象とする場合があります。

セキュリティーバインディング

WS-SecurityPolicy 仕様で説明されているように、以下のバインディングタイプの 1 つを使用して SOAP メッセージを保護することができます。

  • sp:TransportBinding: トランスポートバインディング は、(たとえば、HTTPSを介して) トランスポートレベルで提供されるメッセージ保護を参照します。このバインディングは、SOAP だけでなく、任意のメッセージタイプを保護するために使用できます。詳細は、前のセクション 「トランスポート層のメッセージの保護」 で説明しています。
  • sp:AsymmetricBinding: 非対称バインディング は、SOAP メッセージエンコーディング層で提供されるメッセージ保護を指します。保護機能は、非対称暗号 (公開鍵暗号としても知られる) を使用して実装されます。
  • sp:SymmetricBinding: 対称バインディング は、SOAP メッセージエンコーディング層で提供されるメッセージ保護を指します。保護機能は、対称暗号を使用して実装されます。対称暗号の例は、WS-SecureConversation および Kerberos トークンが提供するトークンです。

メッセージの保護

以下の保護品質は、一部またはすべてのメッセージに適用できます。

  • 暗号化
  • 署名
  • 署名+暗号化 (暗号化前に署名)
  • 暗号化+署名 (署名前に暗号化)

これらの保護品質は、1 つのメッセージで任意に組み合わせることができます。したがって、メッセージのある部分は暗号化のみ、メッセージの他の部分は署名のみとすることができます。メッセージのまた別の部分では、署名と暗号化の両方を行うこともできます。メッセージの一部を保護しないままにすることもできます。

メッセージの保護を適用する最も柔軟なオプションは、SOAP 層 (sp:AsymmetricBinding または sp:SymmetricBinding) で利用できます。トランスポート層 (sp:TransportBinding) は、メッセージ 全体 に保護を適用するオプションのみを提供します。

保護するメッセージの一部を指定する

現在、Apache CXF を使用すると、SOAP メッセージの以下の部分を署名または暗号化できます。

  • Body: SOAP メッセージの soap:BODY 要素全体を署名/暗号化します。
  • Header(s): 1 つ以上の SOAP メッセージヘッダーを署名/暗号化します。各ヘッダーの保護品質を個別に指定できます。
  • Attachments: SOAP メッセージ内のすべての添付ファイルに署名/暗号化します。
  • Elements: SOAP メッセージ内の特定の XML 要素に署名/暗号化します。

設定の役割

メッセージ保護に必要なすべての詳細がポリシーを使用して指定されているわけではありません。ポリシーは、主にサービスに必要な保護品質を指定する方法を提供することを目的としています。セキュリティートークン、パスワードなどのサポート詳細は、個別の製品固有のメカニズムを使用して提供する必要があります。実際には、これは、Apache CXF ではサポートする設定の詳細を Blueprint XML 設定ファイルで提供する必要があることを意味します。詳細は 「暗号化キーと署名キーの提供」 を参照してください。