2

WCFで2要素(または多要素)カスタム認証を実装することは可能ですか?たとえば、2つの異なるクレデンシャルタイプを使用してクライアントを認証したいとします。

1)ユーザーはログインとパスワードを入力します

2)WCFサービスはログインとパスワードを検証します

3)前の手順が成功した場合、サーバーはシークレットクエリ(またはOTPパスワード番号)を返します

4)ユーザーは受信したクエリに対する回答を入力してサーバーに送信します

5)答えが正しければ-ユーザーはサーバーで認証されます。彼はサーバーメソッドを実行できます。

認証されたユーザーはセキュリティトークンを持っています。次のサーバー呼び出しで、クライアントは明示的な資格情報なしでサーバーセキュリティトークンのみを送信します。

msdnでそれに関するリファレンスを1つだけ見つけました-http ://msdn.microsoft.com/en-us/library/ms788756.aspx

.NET Framework 3.5では、クライアントメッセージには、特定のタイプの複数のトークンと、異なるタイプのトークンを含めることができます。

この機能により、次のような多くのシナリオが可能になります。

インクリメンタルクレーム送信。サービスに対するすべての操作では、一連のクレームが存在する必要がある場合がありますが、一部の操作では追加のクレームが必要になる場合があります。操作ごとに個別に発行されたトークンを使用する代わりに、クライアントは、最初のクレームのセットで1つの発行されたトークンを取得し、呼び出されている操作に必要な残りのクレームで別の発行されたトークンを使用できます。

多要素認証。クライアントが操作の実行を許可される前に、複数の発行者から発行されたトークン、またはクレームのセットが異なる発行されたトークンを収集する必要がある場合。WCFは、発行されたトークンをトークンタイプと見なすため、このシナリオでは、メッセージに2つのサポートされている発行済みトークンを含めることができる必要があります。

しかし、それを実装する方法の実際の例はありません:(私はカスタムユーザークレデンシャルを使用してのみ認証できます。

4

1 に答える 1

0

はい、できます。私が考えることができる2つの一般的な方法は次のとおりです。

  1. ActiveDirectory認証-あなたはそれがどのように機能するか知っています

  2. 証明書認証-ホストには証明書ストアがあります。クライアントから提供された証明書は、ストアに存在する必要があります。はいの場合は合格、それ以外の場合は失敗します。

後者は、ビジネスパートナー通信またはクロスマシンコールで使用でき、セキュリティの別のレイヤーを適用する方が適切です。バインディングは、WebServiceBinding(WS Binding)またはNetTCPBindingのいずれかです。

証明書の作成とその動作については、多くのチュートリアルが利用できます。行き詰まったら投稿してください。

于 2011-11-30T12:00:14.877 に答える