2013-07-12 46 views
4

我已经成功地开始了我认识的认证,向客户端返回一个令牌(JWT)。这个令牌有一个到期日期/时间,所以我正在考虑将令牌保存在一个cookie中,以便将来的登录被认证,但这可能不起作用。将凭证/令牌保存在cookie中?

然后,我虽然关于保存cookie中的用户名和密码,但我知道这不是建议?

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

该表格需要包含“记住我”,以便可以进行自动登录。

达到此目的的最佳方法是什么?

我是否应该在cookie中存储用户名和密码,如果不是,我下次用户到达我的网站时如何自动进行身份验证。我提供的令牌将会过期,因此即使存储该令牌也有任何意义?

在此先感谢

+0

你在哪里终于保住你的智威汤逊的cookie或服务器端会话?请你回复。 –

回答

5

不要存储在cookie中的用户名或密码。即使cookie是加密的,最好使用像cookie中的令牌一样的过期时间短的凭证,而不是象凭证这样的具有更长保质期的凭证。

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

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

+0

感谢您的反馈意见。所以我认为我只会将该标记存储在cookie中。然后,我可以有一个端点,在它过期的情况下再次验证令牌。通常使用令牌过期Cookie的长度是多少。谷歌Gmail似乎永远登录?自动更新令牌过期以避免中断时不是很好的做法?即不再登录? – Martin

+0

我不认为有关到期限制的任何拇指规则。这取决于您的业务需求。顺便说一下,基于OAuth 2.0授权代码的授权具有刷新令牌,可以用来无缝获取新的访问令牌,而不会询问用户的信用,但仅适用于服务器端,并且由于涉及的风险而被禁止用于客户端。您必须基本思考如何提供无缝登录与安全体验的超愉快体验。如果我需要在几个小时内登录一次,我会采取这种做法,而不是将我的凭据存储在某个浏览器可以控制的地方。 – Badri