什么是ASPXAUTH cookie?

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

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

ASPXAUTH cookie用于确定用户是否被authentication。

至于cookie的位置,这取决于您的浏览器。 如果您使用Firefox,您可以通过单击工具 – >选项 – >隐私来查看Cookie。 然后向下滚动到该域并将其展开以查看cookie及其值。 该值使用机器密钥(位于服务器的machine.config或web.config文件中)进行encryption,因此查看客户端上的cookie不会真的为您提供任何信息。 您可以使用以下命令解密/查看服务器端的值:

HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];//.ASPXAUTH FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value); 

authTicket有这些字段:

在这里输入图像说明

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

实际上,.ASPXAUTH cookie不能准确地告诉你用户是否真正被authentication。 当用户注销应用程序时,将从浏览器中删除.ASPXAUTH cookie。 但是,如果您在短时间内(使用表单身份validationcookie超时)回到网站,并使用以下方式编辑新的ASP.NET_SessionId Cookie:

  • 将“ASP.NET_SessionId”中的“name”字段更改为“.ASPXAUTH”
  • 将“char”从24 char sessionID更改为旧的448 charvalidationstring

刷新之后,您将能够承担经过身份validation的用户的身份,而无需再次进行技术上的重新身份validation。 (再次假设您在.ASPXAUTHencryptionauthenticationstring中存储的指定超时内执行此操作)

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

如果用户与HTMLloginURL的交互已经允许TSWPP服务器build立用户身份,那么远程服务器应该生成一个cookie来标识用户并允许对服务器进行身份validation。 cookie的内容应该被签名和encryption。 包括签名和encryptionalgorithm的这个cookie的具体实现取决于TSWPP服务器的实现,因为只需要服务器来parsingcookie的内容。 如果服务器实现了cookie,那么cookie必须以“application / x-msts-webfeed-login”的内容types在HTTP有效载荷中返回。

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