ASP.NET MVC アプリケーションで個々の (動的) ページを保護したいと考えています。
完全な認証システムを使用したくありません。サイトの管理者には既にフォーム認証を使用しています。代わりに、これは特定のユーザーのパスワードを含むページへのリンクを送信できるようにするためです。
私が現在これを処理している方法は、有効なパスワードが送信されたときに、ページ ID (Guid) とそのセッション ID を含む暗号化された Cookie を作成し、それらをページにリダイレクトすることです。「Page」コントローラ アクションで、この Cookie を検証します。
最初の質問は、これが最善の (最も安全な) アプローチですか (フォーム認証を使用することを除けば) ですか?
2 番目の質問です。フォーム認証で暗号化を実行するために使用されるマシン キーを読み取ることはできますか、それとも FormsAuthentication を使用して Cookie を暗号化することはできますか?
展開する前に常に新しいマシン キーを生成するため、すべての暗号化で同じキーを使用した方がよいでしょう。
[アップデート]
マシン キーにアクセスする方法については、http://rich-rogers.com/archive/asp.net-c-sharp-encrypt-hash-using-machinekey-valuesで回答を見つけました。
【アップデート2】
この質問をした後、彼らがアクセスできるページのリストを維持する必要があるため、現在のセッションにこれらを保存するだけの方がよいと思います。有効期限のあるセキュリティ トークンのリストを保存できます。私はすでにセッションのラッパーを持っているので、これも簡単に単体テストできるはずです。