在使用ASP.Net Forms身份验证时,我遇到了.ASPXAUTH cookie。我有几个问题:
答案 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
包含以下字段:
声明“ASPXAUTH基本上用于维护ASP.NET会话状态”是不正确的。 ASP.NET发布了一个完全不同的cookie,名为ASP.NET_SessionId,用于跟踪会话状态。
答案 1 :(得分:8)
实际上.ASPXAUTH cookie并不能准确地告诉您用户何时进行了真正的身份验证。当用户退出应用程序时,将从浏览器中删除.ASPXAUTH cookie。但是,如果您在短时间内返回该站点(具有表单身份验证cookie的超时),并使用以下内容编辑新的ASP.NET_SessionId cookie:
刷新后,您将能够承担经过身份验证的用户的身份,而无需再次进行技术上的重新身份验证。 (再次假设您在.ASPXAUTH加密的auth字符串中存储的特定超时内执行此操作)
好的blog帖子更详细地解释了这个问题。一种可能的解决方案是将.ASPXAUTH与ASP会话结合起来。
答案 2 :(得分:0)
如果用户与HTML登录URL的交互允许TSWPPserver建立用户的身份,则远程服务器应该生成一个cookie,用于标识用户并允许对服务器进行身份验证。 cookie的内容应该签名和加密。此cookie的具体实现(包括签名和加密算法)取决于TSWPP服务器的实现,因为只需要服务器来解析cookie的内容。如果服务器实现cookie,则必须在HTTP有效负载中返回cookie,其内容类型为" application / x-msts-webfeed-login"。