web-dev-qa-db-ja.com

MVCでCookieベースのセッションを作成するにはどの.NETオブジェクトを使用する必要がありますか?

ASP.NETメンバーシッププロバイダーのチャレンジ質問に完全に適合しない検証手法を使用するカスタムパスワードリセットアプリケーションを作成しています。

つまり、ユーザーがカスタムフォームを使用してログインした後、ワークフローを呼び出し、エンドユーザーから情報(バックアップ電話番号、電子メールアドレス)を収集する必要があります。

Cookieベースのセッションを作成するために知っている唯一の方法(あまり「革新」を行わずに)は、WIFを使用することです。

  • Windows以外のユーザーストアで機能する認証済みセッションを作成するために、ASP.NET MVCで使用できる他の標準オブジェクトは何ですか?

理想的には、「admin」、「departmentXadmin」、「normalUser」、「restrictedUser」などのセッションオブジェクトに「ロール」またはクレーム情報を格納できます。


ワークフローは次のようになります。

  1. ユーザーはユーザー名とパスワードでログインします
  2. ユーザー名とpwが正しい場合、(ステートレス)Cookieベースのセッションが作成されます
  3. ユーザーは、バックアップ電話番号を入力できるHTMLフォームにリダイレクトされます(SMSデュアルファクターの場合)。または、すでに設定されている場合は検証します。
  4. その後、ユーザーは提供されたフォームを使用してパスワードを変更できます

「パスワードを忘れた」は次のようになります

  1. ユーザーがOTPコードを電話に送信するように要求します
  2. ユーザーはユーザー名とOTPを使用してログインします
  3. OTPが有効で有効期限が切れていない場合は、Cookieベースのセッションを作成し、パスワードのリセットを許可するフォームにリダイレクトします
  4. パスワードリセットフォームを表示し、結果を処理します。
4

まず、4.5でリリースされた改善されたメンバーシップビットを確認してください。古い不気味な構造よりも、カスタムオプションを実装する方が簡単なはずです。

どちらの場合でも、「メンバーシッププロバイダーに主要な認証を処理させ、独自のデータベースを使用して拡張機能を処理させる」という非常に効果的な方法を実行できます。古いものでも、プログラムで管理できるアカウント承認の概念があります。

別のオプションは、ASP.NETの認証ビットを使用するが、独自のバッキングをロールすることです。 この記事 から始めて、いくつかの基本を理解し、そこからパーツを追加することができます。

1
Wyatt Barnett

私はFSCAuthという名前の独自の単純な認証システムの作成に取り組んできました。それはしばらくの間出ていました、しかしそれは決して「保証された」安全ではありません。とにかく、とにかく独自の認証をロールすることを検討している場合(これは常に危険です)、私の認証フレームワークを出発点として使用することを検討するかもしれません。拡張は簡単になるように設計されていますが、実際に気になるものだけを実装します。

その目標の1つは、Cookieを処理し、ハッシュ値を混乱させないようにすることです(非常に微妙に安全でないものを作成できる場合)。ただし、ユースケースによっては、一部の変更が適切であるように思えます。

FSCAuthの「ブランチ」がいくつかあります。

  1. Binpress で有償サポートオプション付きのBSDライセンス
  2. Binpressにあるものと同じコピーですが、 bitbucket で簡単に参照できます
  3. カスタムMVCフレームワーク(BSD)に統合されています。古いバージョンとは完全には互換性がありませんが、このバージョンは活発に開発されており(現在実験中)、他のバージョンはおそらく(興味がないために) bitbucket で死んでいます。
0
Earlz