次の方法で共有


WCF のメッセージ セキュリティ

Windows Communication Foundation (WCF) には、セキュリティを提供するための 2 つの主要なモード (TransportMessage) と、2 つを組み合わせた 3 つ目のモード (TransportWithMessageCredential) があります。 このトピックでは、メッセージのセキュリティと、それを使用する理由について説明します。

メッセージ セキュリティとは

メッセージ セキュリティでは、WS-Security 仕様を使用してメッセージをセキュリティで保護します。 WS-Security 仕様では、SOAP メッセージ レベル (トランスポート レベルではなく) で機密性、整合性、および認証を確保するための SOAP メッセージングの機能強化について説明します。

簡単に言うと、メッセージのセキュリティは、セキュリティ資格情報と要求をすべてのメッセージと共にメッセージ保護 (署名または暗号化) と共にカプセル化することで、トランスポート セキュリティとは異なります。 コンテンツを変更してセキュリティをメッセージに直接適用すると、セキュリティで保護されたメッセージをセキュリティの側面に関して自己完結型にすることができます。 これにより、トランスポート セキュリティを使用する場合に不可能なシナリオがいくつか可能になります。

メッセージ セキュリティを使用する理由

メッセージ レベルのセキュリティでは、すべてのセキュリティ情報がメッセージにカプセル化されます。 トランスポート レベルのセキュリティではなく、メッセージ レベルのセキュリティでメッセージをセキュリティで保護する利点は次のとおりです。

  • エンドツーエンドのセキュリティ。 Secure Sockets Layer (SSL) などのトランスポート セキュリティは、通信がポイントツーポイントの場合にのみメッセージをセキュリティで保護します。 メッセージが最終的な受信側に到達する前に 1 つ以上の SOAP 中継局 (ルーターなど) にルーティングされる場合、中継局がネットワークからメッセージを読み取ると、メッセージ自体は保護されません。 さらに、クライアント認証情報は最初の中継局のみが使用でき、必要に応じて帯域外方式で最終的な受信側に再送信する必要があります。 これは、ルート全体が個々のホップ間で SSL セキュリティを使用している場合でも適用されます。 メッセージ セキュリティはメッセージに直接作用し、その中の XML をセキュリティで保護するため、最終的な受信者に到達する前に関係する中継局の数に関係なく、セキュリティはメッセージと共に維持されます。 これにより、真のエンドツーエンドのセキュリティ シナリオが可能になります。

  • 柔軟性の向上。 メッセージの一部は、メッセージ全体ではなく、署名または暗号化できます。 これは、仲介者がメッセージの目的の部分を表示できることを意味します。 送信者がメッセージ内の情報の一部を中継局に表示する必要があるが、改ざんされていないことを確認する必要がある場合は、署名するだけで暗号化を解除したままにすることができます。 署名はメッセージの一部であるため、最終的な受信者は、メッセージ内の情報がそのまま受信されたことを確認できます。 1 つのシナリオには、Action ヘッダー値に従ってメッセージをルーティングする SOAP 中間サービスがある場合があります。 既定では、WCF はアクション値を暗号化せず、メッセージ セキュリティが使用されている場合は署名します。 そのため、この情報はすべての仲介者が利用できますが、変更することはできません。

  • 複数のトランスポートのサポート。 セキュリティで保護されたメッセージは、名前付きパイプや TCP など、さまざまなトランスポート経由で送信できます。セキュリティのためにプロトコルに依存する必要はありません。 トランスポート レベルのセキュリティでは、すべてのセキュリティ情報のスコープは 1 つの特定のトランスポート接続であり、メッセージ コンテンツ自体からは使用できません。 メッセージ セキュリティは、メッセージの送信に使用するトランスポートに関係なくメッセージをセキュリティで保護し、セキュリティ コンテキストはメッセージ内に直接埋め込まれます。

  • 幅広い資格情報と要求のセットのサポート。 メッセージのセキュリティは、SOAP メッセージ内で任意の種類の要求を送信できる拡張可能なフレームワークを提供する、WS-Security 仕様に基づいています。 トランスポート セキュリティとは異なり、使用できる認証メカニズム (クレーム) のセットは、トランスポート機能によって制限されません。 WCF メッセージ セキュリティには、複数の種類の認証と要求の送信が含まれており、必要に応じて追加の種類をサポートするように拡張できます。 このような理由から、たとえば、フェデレーション資格情報のシナリオでは、メッセージセキュリティなしでは使用できません。 WCF がサポートするフェデレーション シナリオの詳細については、「 フェデレーショントークンと発行済みトークン」を参照してください。

メッセージとトランスポートのセキュリティの比較

Transport-Level セキュリティの長所と短所

トランスポート セキュリティには、次の利点があります。

  • 通信相手が XML レベルのセキュリティの概念を理解している必要はありません。 これにより、通信をセキュリティで保護するために HTTPS を使用する場合など、相互運用性が向上する可能性があります。

  • 一般的にパフォーマンスが向上しました。

  • ハードウェア アクセラレータを使用できます。

  • ストリーミングが可能です。

トランスポート セキュリティには、次の欠点があります。

  • ホップツーホップのみ。

  • 制限付きで、既存の資格情報のセット。

  • トランスポートに依存します。

Message-Level セキュリティの欠点

メッセージ セキュリティには、次の欠点があります。

  • [パフォーマンス]

  • メッセージ ストリーミングを使用できません。

  • XML レベルのセキュリティ メカニズムの実装と、WS-Security 仕様のサポートが必要です。 これは相互運用性に影響する可能性があります。

こちらも参照ください