Cookies 是否在cookie中保存凭据/令牌?

Cookies 是否在cookie中保存凭据/令牌?,cookies,asp.net-web-api,token,access-token,jwt,Cookies,Asp.net Web Api,Token,Access Token,Jwt,我已经成功地进行了身份验证,我知道身份验证将向客户端返回令牌(JWT)。这个令牌有一个过期日期/时间,所以我考虑将令牌保存在cookie中,以便将来的登录经过身份验证,但这可能行不通 然后,我考虑将用户名和密码保存在cookie中,虽然我知道这是不推荐的 目前我有一个接受用户名和密码的表单,成功登录将提供一个用于访问其他端点的令牌 表单需要包含一个“记住我”以便自动登录 实现这一目标的最佳方式是什么 我是否应该在cookie中存储用户名和密码,如果不是,我如何在用户下次到达我的站点时自动进行身份

我已经成功地进行了身份验证,我知道身份验证将向客户端返回令牌(JWT)。这个令牌有一个过期日期/时间,所以我考虑将令牌保存在cookie中,以便将来的登录经过身份验证,但这可能行不通

然后,我考虑将用户名和密码保存在cookie中,虽然我知道这是不推荐的

目前我有一个接受用户名和密码的表单,成功登录将提供一个用于访问其他端点的令牌

表单需要包含一个“记住我”以便自动登录

实现这一目标的最佳方式是什么

我是否应该在cookie中存储用户名和密码,如果不是,我如何在用户下次到达我的站点时自动进行身份验证。我提供的代币即将过期,所以存储它有什么意义吗


提前感谢

请勿将用户名或密码存储在cookie中。即使cookie是加密的,也最好像cookie中的令牌一样存储一个有效期较短的凭证,而不是像凭证一样的密码,后者的有效期更长

即使在ASP.NET Web表单或MVC世界(表单身份验证)中,“记住我”通常也只在cookie过期时才起作用。“记住我”并不意味着永远记住我,记住我必须有一个有限的时间段。时间可以从cookie中派生出来。您可以将JWT放入cookie中,并将cookie的生存时间设置为与JWT相同的时间,例如一小时。当用户在该时间内返回到您的应用程序时,cookie不会过期,用户将自动登录。否则,他们必须重新登录。不要考虑存储用户名-密码和系统登录。让用户输入凭据,这种方法将更加安全。顺便说一句,确保cookie是加密的,并且是仅HTTP的cookie


此机制类似于表单身份验证。您将使用JWT代替身份验证票证。与FAM读取cookie不同,您需要有自己的HttpModule或消息处理程序来执行此操作,并为请求建立身份。

谷歌的身份验证coookie有效期为14天


感谢您的反馈。因此,我认为我将只在cookie中存储令牌。然后,我可以有一个端点,在令牌过期时再次验证令牌。使用令牌使cookie过期的通常长度是多少。谷歌gmail似乎将永远登录?如果令牌过期后自动续订,这样就不会出现中断,这不是一种好的做法吗??i、 不再登录?我不认为有任何关于到期限制的经验法则。这取决于您的业务需要。顺便说一句,OAuth 2.0基于授权码的授权具有刷新令牌,可用于无缝获取新的访问令牌,而无需询问用户凭据,但由于涉及风险,该令牌仅适用于服务器端,禁止用于客户端。基本上,您必须考虑提供无缝登录和安全登录的超愉快体验。如果我需要在几个小时内登录一次,我会将其与浏览器可以控制的地方存储的凭据进行对比。Oauth 2规范建议过期时间不超过10分钟(rfc6749)。OAuth 2安全最佳实践规范——以及大多数标识提供程序——建议不要将访问令牌放在cookie中,甚至只放在HTTP cookie中,或者放在浏览器中的任何持久存储机制中。还建议不要在会话中使用JWTs。本文总结了前端应用程序的令牌存储:感谢链接,这正是我正在使用的框架。我没有意识到谷歌的有效期只有14天……所以14天之后不应该有任何自动重新登录。它应该过期,并且应该强制用户再次登录?这是您的决定;)我认为14天是有意义的(对于谷歌来说)。你最终在哪里保存了你的JWTcookie或服务器端会话?请你回信好吗。