ASP.Net フォーム認証を使用しているときに、.ASPXAUTH Cookie に遭遇しました。いくつか質問があります。
- このクッキーの目的は何ですか?
- このクッキーの場所は?
ASP.Net フォーム認証を使用しているときに、.ASPXAUTH Cookie に遭遇しました。いくつか質問があります。
ASPXAUTH Cookie は、ユーザーが認証されているかどうかを判断するために使用されます。
Cookie の場所に関しては、ブラウザによって異なります。Firefox を使用している場合は、[ツール] -> [オプション] -> [プライバシー] をクリックして Cookie を表示できます。次に、ドメインまでスクロールして展開し、Cookie とその値を確認します。値はマシン キー (サーバーの machine.config ファイルまたは web.config ファイルにあります) を使用して暗号化されるため、クライアントで Cookie を確認しても実際には何の情報も得られません。次を使用して、サーバー側で値を復号化/表示できます。
HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];//.ASPXAUTH
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
authTicket
これらのフィールドはどこにありますか:
「基本的に ASPXAUTH は ASP.NET セッション状態を維持するために使用されます」という記述は正しくありません。ASP.NET は、ASP.NET_SessionId という名前のまったく異なる Cookie を発行して、セッション状態を追跡します。
実際には、.ASPXAUTH Cookie は、ユーザーが本当に認証されているかどうかを正確に伝えません。ユーザーがアプリからログアウトすると、.ASPXAUTH Cookie がブラウザーから削除されます。ただし、(フォーム認証 Cookie のタイムアウトで) 短時間内にサイトに戻り、新しい ASP.NET_SessionId Cookie を次のように編集する場合:
更新後、技術的に再認証しなくても、認証されたユーザーの ID を引き継ぐことができます。(ここでも、.ASPXAUTH 暗号化認証文字列内に保存されている特定のタイムアウト内でこれを行うと仮定します)
良いブログ投稿では、問題をより詳細に説明しています。考えられる解決策は、.ASPXAUTH を ASP セッションと結合することです。
HTML ログイン URL とのユーザーの対話により、TSWPP サーバーがユーザーの ID を確立できる場合、リモート サーバーは、ユーザーを識別し、サーバーへの認証を許可する Cookie を生成する必要があります。Cookie のコンテンツは、署名および暗号化する必要があります。署名および暗号化アルゴリズムを含むこの Cookie の具体的な実装は、TSWPP サーバーの実装に依存します。これは、サーバーのみが Cookie の内容を解析する必要があるためです。サーバーが Cookie を実装している場合、Cookie は「application/x-msts-webfeed-login」の Content-Type を持つ HTTP ペイロードで返される必要があります。