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つのサポートされている発行済みトークンを含めることができる必要があります。
しかし、それを実装する方法の実際の例はありません:(私はカスタムユーザークレデンシャルを使用してのみ認証できます。