如何正确使用刷新令牌?

时间:2019-04-26 21:36:41

标签: authentication jwt access-token refresh-token

关于刷新令牌,似乎没有一个明确的标准,或者至少到目前为止,我无法从阅读中清楚地了解如何使用它们。因此,这是我为Web应用程序建议的设置,如果可以在这里验证刷新令牌的使用,我将不胜感激。

  1. 当用户登录时,服务器端将创建访问令牌(JWT)和刷新令牌(另一个JWT)。我将刷新令牌存储在数据库中,并将其与此特定用户相关联。 (我可以在这里使用redis来加快速度吗?)访问令牌将在15分钟后过期,刷新令牌将在3小时后过期。我读过的文章的刷新令牌在几天之内就会过期,但是我不明白为什么它需要持续这么长时间。

  2. 这些令牌将被发送回客户端,并仅作为安全cookie作为http存储。

  3. 来自客户端的所有后续请求都将带有访问令牌。访问令牌过期后,将刷新令牌发送到服务器端的刷新端点。

  4. 然后,
  5. 服务器端在数据库中查找刷新令牌。如果找到且刷新令牌未过期,请创建另一个访问令牌并将其发送回客户端。如果找到并且已过期,则创建一个新的刷新令牌并替换数据库中的令牌。然后创建访问令牌,并将新的刷新令牌以及新的访问令牌发送回客户端。如果在数据库中找不到刷新令牌,则发送401未经授权的回传。

  6. 用户注销后,清除刷新令牌并从客户端的cookie中访问令牌。服务器端还将从数据库中删除刷新令牌,以便不能将其用于生成更多访问令牌。

这安全吗?我想念什么吗?

谢谢!

0 个答案:

没有答案