質問

ASP.Netフォーム認証を使用しているときに、.ASPXAUTH Cookieに遭遇しました。いくつか質問があります:

  • このCookieの目的は何ですか?
  • この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);

where authTicket には次のフィールドがあります:

ここに画像の説明を入力

ステートメント「ASPXAUTH」は、基本的にASP.NETセッション状態を維持するために使用されます間違っている。 ASP.NETは、ASP.NET_SessionIdという名前のまったく異なるCookieを発行して、セッション状態を追跡します。

他のヒント

実際には、.ASPXAUTH Cookieは、ユーザーが本当に認証されたときに正確に通知しません。ユーザーがアプリからログアウトすると、ブラウザから.ASPXAUTH Cookieが削除されます。ただし、短時間で(フォーム認証Cookieのタイムアウトを使用して)サイトに戻り、次のように新しいASP.NET_SessionId Cookieを編集した場合:

  • " name"を変更" ASP.NET_SessionId"のフィールド" .ASPXAUTH"へ
  • 変更" value&quot ;; 24文字のセッションIDから古い448文字の認証文字列まで

更新後、技術的に再認証することなく、認証されたユーザーのIDを引き継ぐことができます。 (これも、.ASPXAUTH暗号化された認証文字列内に保存された特定のタイムアウト内でこれを行うと仮定します)

問題を説明するブログさらに詳細に。考えられる解決策は、.ASPXAUTHをASPセッションに結合することです。

HTMLログインURLとのユーザーの対話によりTSWPPserverがユーザーのIDを確立できる場合、リモートサーバーは、ユーザーを識別するCookieを生成し、サーバーへの認証を許可する必要があります。 Cookieのコンテンツは署名および暗号化される必要があります。 Cookieのコンテンツを解析するのに必要なのはサーバーのみであるため、署名および暗号化アルゴリズムを含むこのCookieの特定の実装はTSWPPサーバーの実装に依存します。サーバーがCookieを実装する場合、CookieはContent-Typeが" application / x-msts-webfeed-login"のHTTPペイロードで返される必要があります。

http://msdn.microsoft.com/en-us/library/ ee920427.aspx

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top