在使用 ASP.Net Forms 身份验证时,我遇到了 .ASPXAUTH cookie。我有几个问题:
- 这个 cookie 的目的是什么?
- 这个 cookie 的位置是什么?
在使用 ASP.Net Forms 身份验证时,我遇到了 .ASPXAUTH 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);
authTicket
这些字段在哪里:
“ASPXAUTH 基本上是用来维护 ASP.NET 会话状态”的说法是不正确的。ASP.NET 发出一个完全不同的 cookie,名为 ASP.NET_SessionId,以跟踪会话状态。
实际上 .ASPXAUTH cookie 并不能准确地告诉您用户何时真正通过身份验证。当用户退出应用程序时,.ASPXAUTH cookie 将从浏览器中删除。但是,如果您在短时间内返回该站点(表单身份验证 cookie 超时),并使用以下内容编辑新的 ASP.NET_SessionId cookie:
刷新后,您将能够假定已通过身份验证的用户的身份,而无需在技术上再次重新进行身份验证。(再次假设您在 .ASPXAUTH 加密的身份验证字符串中存储的特定超时内执行此操作)
一篇好的博客文章更详细地解释了这个问题。一种可能的解决方案是将 .ASPXAUTH 与 ASP 会话耦合。
如果用户与 HTML 登录 URL 的交互允许 TSWPPserver 建立用户的身份,远程服务器应该生成一个 cookie 来识别用户并允许对服务器进行身份验证。cookie 的内容应该被签名和加密。这个cookie的具体实现包括签名和加密算法依赖于TSWPP服务器的实现,因为只需要服务器解析cookie的内容。如果服务器实现了 cookie,那么 cookie 必须在 HTTP 有效负载中返回,其 Content-Type 为“application/x-msts-webfeed-login”。
在 Chrome 浏览器上 1.developer tools -F12 2.locate Application tab 3.point the left pane for cookies 你会发现它是否在登录应用程序中可用会话的 ASPXAUTH cookie