ログインフォームを使用してユーザーを認証しています。
FormsAuthentication
機密性の高いユーザー/ロールのメンバーシップをクライアント側の Cookie または URL 内に保存するため、これは適切です。URL 内は大きなセキュリティ リスクであるため、ここでは触れません。Cookie を使用する
FormsAuthentication
と、次のような問題が生じます。a) クライアントが自身の役割を指示する立場にある場合のセキュリティ。b) Cookie に保存されているデータが多すぎる。セキュリティによって得られるものは何もなく、ユーザー データ ストレージのサイズで大きな時間を失っているので、むしろセッションで作業したいと思います。
FormsAuthentication
すべての基本的なログイン フォーム処理機能のようなものを再利用したいと思います。しかし、クライアント側ではなく、おそらくセッションにユーザーデータをサーバー側に保存して、すべてを単一のCookieに詰め込みたいと思います。ある種のセッショントークンに対して認証するだけです。
データベースがなく、ユーザー データのローカル ディスク ストレージが禁止されています。私はサード パーティの認証サービス プロバイダーに依存しており、要件として、このサービスでのおしゃべりを減らす必要があります。したがって、ユーザー情報を一時的に保存するためのセッション。ひどいですが、それは必ずしも私が求めている問題ではありません。また、ビューにユーザー情報を表示するために、AuthorizeAttribute などで後で使用するために、HttpContext.user とおそらく Thread.CurrentPrincipal を設定/使用する必要があります。
そのため、クライアント側のすべてのユーザー データを Cookie にFormsAuthentication
保存します。一方、Session はすべてのデータをサーバー側に格納し、単純なクライアント側のトークン Cookie に依存します。ただし、asp.net の起動および認証手順中は、どこでもセッションを使用できません。クライアント側ではなくセッションサーバー側にすべてのデータを格納する同等のフォーム「メンバーシップ」プロバイダーはありますか?
同等のセッションがない場合...
- HttpContext.userとThread.CurrentPrincipal をどこで設定して、他の MVC コンポーネントに干渉したり台無しにしたりせずに両方の値を両方の MVC アプリの残りの部分で使用できるようにしますか?
- #1 にかかっていますが、そのエントリ ポイントでセッションを利用できますか? そうでない場合、Session に格納されたデータを使用して Principle/Identity オブジェクトを作成できるようにするにはどうすればよいですか?
- これはおそらく固有の要件ではありません。これを処理するライブラリは既に利用可能ですか?