4

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

然后我虽然知道将用户名和密码保存在 cookie 中,但我知道不推荐这样做?

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

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

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

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

提前致谢

4

2 回答 2

5

不要将用户名或密码存储在 cookie 中。即使 cookie 是加密的,最好将过期时间短的凭证(如 cookie 中的令牌)存储,而不是保存期限更长的凭证(如密码)。

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

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

于 2013-07-12T12:56:55.373 回答
2

Google 的身份验证 cookie 有效期为 14 天。

http://ben.onfabrik.com/posts/dog-fooding-our-api-authentication

于 2013-07-13T13:02:44.050 回答