6.2. SOAP メッセージ保護

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

概要

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

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

WS-SecurityPolicy 仕様で説明されているように、SOAP メッセージを保護するために次のバインディングタイプのいずれかを使用できます。

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

メッセージ保護

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

  • 暗号化。
  • 署名。
  • signing+encryption (暗号化前の署名)。
  • encryption+signing (署名前の暗号化)。

このような保護性は、1 つのメッセージに任意に組み合わせることができます。したがって、メッセージの一部の部分は暗号化のみできますが、メッセージの他の部分には署名のみが使用され、メッセージの他の部分は署名と暗号化の両方が可能です。メッセージの一部を保護を外すこともできます。

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

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

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

  • Body: SOAP メッセージの soap:BODY 要素全体を署名/暗号化します。
  • ヘッダー : 1 つ以上の SOAP メッセージヘッダーの署名および暗号化を行います。各ヘッダーの保護品質を個別に指定することができます。
  • 添付: SOAP メッセージですべての添付の署名および暗号化を行います。
  • 要素: SOAP メッセージで特定の XML 要素の署名や暗号化を行います。

設定のロール

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