什么是ASPXAUTH cookie?

时间:2009-01-08 06:49:35

标签: asp.net cookies forms-authentication

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

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

3 个答案:

答案 0 :(得分:78)

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包含以下字段:

enter image description here

声明“ASPXAUTH基本上用于维护ASP.NET会话状态”是不正确的。 ASP.NET发布了一个完全不同的cookie,名为ASP.NET_SessionId,用于跟踪会话状态。

答案 1 :(得分:8)

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

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

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

好的blog帖子更详细地解释了这个问题。一种可能的解决方案是将.ASPXAUTH与ASP会话结合起来。

答案 2 :(得分:0)

如果用户与HTML登录URL的交互允许TSWPPserver建立用户的身份,则远程服务器应该生成一个cookie,用于标识用户并允许对服务器进行身份验证。 cookie的内容应该签名和加密。此cookie的具体实现(包括签名和加密算法)取决于TSWPP服务器的实现,因为只需要服务器来解析cookie的内容。如果服务器实现cookie,则必须在HTTP有效负载中返回cookie,其内容类型为" application / x-msts-webfeed-login"。

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