在使用ASP.Net Forms身份验证时,我遇到了.ASPXAUTH cookie。我有几个问题:
- 此Cookie的目的是什么?
- 该Cookie的位置在哪里?
在使用ASP.Net Forms身份验证时,我遇到了.ASPXAUTH cookie。我有几个问题:
Answers:
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,以跟踪会话状态。
Application_PostAuthenticateRequest
该Request.IsAuthenticated是事实,但.ASPXAUTH我HttpContext.Current.Request.Cookies没有价值。我使用sessionState。
实际上,.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”的形式返回。