ASP.Netフォーム認証を使用しているときに、.ASPXAUTHCookieに遭遇しました。いくつか質問があります。
- このクッキーの目的は何ですか?
- このクッキーの場所はどこですか?
ASP.Netフォーム認証を使用しているときに、.ASPXAUTHCookieに遭遇しました。いくつか質問があります。
回答:
ASPXAUTH 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を発行します。
Application_PostAuthenticateRequest
実際、.ASPXAUTH Cookieは、ユーザーが本当に認証された時期を正確に通知しません。ユーザーがアプリからログアウトすると、.ASPXAUTHCookieがブラウザーから削除されます。ただし、(フォーム認証Cookieのタイムアウトを使用して)短期間でサイトに戻り、次のように新しいASP.NET_SessionIdCookieを編集する場合:
更新後、技術的に再認証することなく、認証されたユーザーのIDを引き継ぐことができます。(ここでも、.ASPXAUTH暗号化認証文字列内に格納されている特定のタイムアウト内にこれを行うと想定しています)
良いブログ投稿は問題をより詳細に説明しています。考えられる解決策は、.ASPXAUTHをASPセッションと結合することです。
ユーザーがHTMLログインURLを操作することで、TSWPPserverがユーザーのIDを確立できるようになった場合、リモートサーバーはユーザーを識別してサーバーへの認証を許可するCookieを生成する必要があります。Cookieの内容は、署名および暗号化する必要があります。署名および暗号化アルゴリズムを含むこのCookieの特定の実装は、サーバーのみがCookieの内容を解析する必要があるため、TSWPPサーバーの実装に依存します。サーバーがCookieを実装している場合、Cookieは「application / x-msts-webfeed-login」のContent-Typeを持つHTTPペイロードで返される必要があります。