81

在使用 ASP.Net Forms 身份验证时,我遇到了 .ASPXAUTH cookie。我有几个问题:

  • 这个 cookie 的目的是什么?
  • 这个 cookie 的位置是什么?
4

4 回答 4

87

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 发出一个完全不同的 cookie,名为 ASP.NET_SessionId,以跟踪会话状态。

于 2009-01-08T12:20:09.993 回答
12

实际上 .ASPXAUTH cookie 并不能准确地告诉您用户何时真正通过身份验证。当用户退出应用程序时,.ASPXAUTH cookie 将从浏览器中删除。但是,如果您在短时间内返回该站点(表单身份验证 cookie 超时),并使用以下内容编辑新的 ASP.NET_SessionId cookie:

  • 将“名称”字段从“ASP.NET_SessionId”更改为“.ASPXAUTH”
  • 将“值”从 24 字符 sessionID 更改为旧的 448 字符身份验证字符串

刷新后,您将能够假定已通过身份验证的用户的身份,而无需在技术上再次重新进行身份验证。(再次假设您在 .ASPXAUTH 加密的身份验证字符串中存储的特定超时内执行此操作)

一篇好的博客文章更详细地解释了这个问题。一种可能的解决方案是将 .ASPXAUTH 与 ASP 会话耦合。

于 2010-10-03T16:16:18.587 回答
0

如果用户与 HTML 登录 URL 的交互允许 TSWPPserver 建立用户的身份,远程服务器应该生成一个 cookie 来识别用户并允许对服务器进行身份验证。cookie 的内容应该被签名和加密。这个cookie的具体实现包括签名和加密算法依赖于TSWPP服务器的实现,因为只需要服务器解析cookie的内容。如果服务器实现了 cookie,那么 cookie 必须在 HTTP 有效负载中返回,其 Content-Type 为“application/x-msts-webfeed-login”。

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

于 2013-09-23T23:19:25.173 回答
0

在 Chrome 浏览器上 1.developer tools -F12 2.locate Application tab 3.point the left pane for cookies 你会发现它是否在登录应用程序中可用会话的 ASPXAUTH cookie

于 2021-12-24T09:34:38.403 回答