このセクションでは、 NetMsmqBindingを使用する場合の WCF メッセージのセキュリティについて説明します。
注
このトピックを読む前に、 セキュリティの概念を読むことをお勧めします。
次の図は、WCF を使用したキュー通信の概念モデルを示しています。 この図と用語は、次の説明に使用されます。
トランスポート セキュリティの概念。
WCF を使用してキューに登録されたメッセージを送信する場合、WCF メッセージはメッセージ キュー (MSMQ) メッセージの本文として添付されます。 トランスポート セキュリティは MSMQ メッセージ全体をセキュリティで保護しますが、メッセージ (または SOAP) セキュリティは MSMQ メッセージの本文のみをセキュリティで保護します。
メッセージ セキュリティの主な概念は、クライアントがターゲット キューのメッセージをセキュリティで保護するトランスポート セキュリティとは異なり、クライアントが受信側アプリケーション (サービス) のメッセージをセキュリティで保護することです。 そのため、MSMQ は、メッセージ セキュリティを使用して WCF メッセージをセキュリティで保護するときに何の役割も果たしません。
WCF メッセージ セキュリティは、証明書や Kerberos プロトコルなどの既存のセキュリティ インフラストラクチャと統合される WCF メッセージにセキュリティ ヘッダーを追加します。
メッセージ資格情報の種類
サービスとクライアントは、メッセージ セキュリティを使用して、相互に認証するための資格情報を提示できます。 メッセージ セキュリティを選択するには、 Security モードを Message
または Both
に設定します (つまり、トランスポート セキュリティとメッセージ セキュリティの両方を使用します)。
サービスは、 Current プロパティを使用して、クライアントの認証に使用される資格情報を検査できます。 これは、サービスが実装することを選択した追加の承認チェックにも使用できます。
このセクションでは、さまざまな資格情報の種類と、それらをキューで使用する方法について説明します。
証書
証明書の資格情報の種類では、X.509 証明書を使用してサービスとクライアントを識別します。
一般的なシナリオでは、クライアントとサービスは、信頼された証明機関によって有効な証明書を発行されます。 接続が確立されると、クライアントはサービスの証明書を使用してサービスの有効性を認証し、サービスを信頼できるかどうかを判断します。 同様に、サービスはクライアントの証明書を使用してクライアントの信頼を検証します。
キューの切断された性質を考えると、クライアントとサービスが同時にオンラインにならない可能性があります。 そのため、クライアントとサービスは、帯域外で証明書を交換する必要があります。 特に、クライアントは、サービスの証明書 (証明機関にチェーンできる) を信頼されたストアに保持するため、正しいサービスと通信していることを信頼する必要があります。 クライアントを認証するために、サービスはメッセージに添付された X.509 証明書を使用してストア内の証明書と照合し、クライアントの信頼性を確認します。 ここでも、証明書は証明機関にチェーンされている必要があります。
Windows を実行しているコンピューターでは、証明書は複数の種類のストアに保持されます。 さまざまなストアの詳細については、「 証明書ストア」を参照してください。
ウィンドウズ
Windows メッセージの資格情報の種類では、Kerberos プロトコルが使用されます。
Kerberos プロトコルは、ドメイン上のユーザーを認証し、認証されたユーザーがドメイン上の他のエンティティとセキュリティで保護されたコンテキストを確立できるようにするセキュリティ メカニズムです。
キューに登録された通信に Kerberos プロトコルを使用する場合の問題は、キー配布センター (KDC) が配布するクライアント ID を含むチケットの有効期間が比較的短いということです。 有効期間は、チケットの有効性を示す Kerberos チケットに関連付けられます。 そのため、待機時間が長いため、クライアントを認証するサービスに対してトークンがまだ有効であることを確認できません。
この資格情報の種類を使用する場合、サービスは SERVICE アカウントで実行されている必要があります。
Kerberos プロトコルは、メッセージ資格情報を選択するときに既定で使用されます。
ユーザー名のパスワード
このプロパティを使用すると、クライアントはメッセージのセキュリティ ヘッダーでユーザー名パスワードを使用してサーバーに対して認証を行うことができます。
発行されたトークン
クライアントは、セキュリティ トークン サービスを使用してトークンを発行し、そのトークンをメッセージに添付して、サービスがクライアントを認証できるようにします。
トランスポートとメッセージ セキュリティの使用
トランスポート セキュリティとメッセージ セキュリティの両方を使用する場合、トランスポート レベルと SOAP メッセージ レベルの両方でメッセージをセキュリティで保護するために使用される証明書は同じである必要があります。