8

Google のオーセンティケーターと同様に、MVC に 2 要素認証を実装することを検討しています。

一部のユーザーは 2 要素認証を設定していないため、2 段階のプロセスを使用したいと考えています。1 つの画面でユーザー名とパスワードを入力し、もう 1 つの画面でワンタイム パスワードを入力します。

私の問題は、ユーザーがワンタイムパスワードを入力している間、ユーザーのユーザー名とパスワードを安全に保存するにはどうすればよいですか? 現在、パスワードを受け取るとすぐに Cookie を拒否または発行するため、パスワードをどこにも保存しません。ただし、2 ステップでは、ユーザーが単に別のアクションに移動できるため、すぐに Cookie を発行することはできません。同様に、パスワードをフォームの隠し要素としてユーザーに送り返したくありません。

この状況の標準的な方法は何ですか?

私が考えることができる最善の方法は、ユーザー名とパスワードをセッションに保存することですが、それがどれほど安全かはわかりません。

4

3 に答える 3

5

実際には、パスワードを保存して、2 番目のステップが通過するまで認証を待つ必要はありません。認証の 2 つのステップを個別に実装するだけで (各ステップは通常の認証と同じです。すぐに認証または拒否します)、最初のステップと 2 番目のステップを通過したユーザーに適切な権限を付与します。

具体的には、AuthorizeConfirmedAttributeから派生した独自の Authorize 属性を作成し、AuthorizeAttributeそれを認証の 2 番目のステップで使用できます。したがって、ワンタイム パスワードを入力する画面を生成するコントローラーでは、通常の[Authorize]属性を使用して、ユーザーが認証の最初のステップを確実に通過するようにします。他のすべてのアクションでは、[AuthorizeConfirmed]属性を使用して、ユーザーが認証の両方のステップに合格したことを確認します。

于 2013-07-31T06:54:14.450 に答える
1

2 要素認証のサンプル フローについては、ASP.NET ID を参照してください。次の投稿には、詳細情報とサンプルへのリンクがありますhttp://blogs.msdn.com/b/webdev/archive/2014/02/11/announce-preview-of-microsoft-aspnet-identity-2-0-0- beta1.aspx

于 2014-02-19T06:37:31.220 に答える