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暗号化された認証文字列内に保存された特定のタイムアウト内でこれを行うと仮定します)
良い blog の投稿で、問題をより詳細に説明しています。可能な解決策は、.ASPXAUTHをASPセッションと結合することです。
HTMLログインURLとのユーザーの対話によりTSWPPserverがユーザーのIDを確立できる場合、リモートサーバーは、ユーザーを識別するCookieを生成し、サーバーへの認証を許可する必要があります。 Cookieのコンテンツは署名および暗号化される必要があります。 Cookieのコンテンツを解析するのに必要なのはサーバーだけなので、署名および暗号化アルゴリズムを含むこのCookieの特定の実装はTSWPPサーバーの実装に依存します。サーバーがCookieを実装する場合、CookieはContent-Typeが「application/x-msts-webfeed-login」のHTTPペイロードで返される必要があります。