小编Kar*_*rro的帖子

在多个设备上刷新令牌

我有一个 Api 和一个移动客户端。我使用刷新令牌如下:

  1. 用户提供凭据,Api 返回访问令牌和刷新令牌。然后刷新令牌及其到期日期时间保存在数据库的用户表中。
  2. 客户端使用给定的访问令牌消耗一些受保护的资源。
  3. 访问令牌过期,因此客户端提供刷新令牌并获取新的令牌对。
  4. 步骤 2 和 3 不断重复。

问题:假设用户有 2 个设备,A 和 B。他使用设备 A 成功登录,因此他获得了 2 个令牌,他很高兴。一旦用户从设备 B 登录,Api 就会向他发送一对新的令牌,这意味着新的刷新令牌将覆盖设备 A 已经给定的令牌。现在用户返回设备 A aaa,它就消失了(无效刷新)令牌!)所以他必须再次提供凭据,而我、用户和您都不希望这样做。

建议:我找到了两种解决问题的方法,但因为我对这个主题还很陌生,所以我看不出哪种方法是最佳实践:

方法 A:为每个用户保存多个刷新令牌,并保存设备标识符(仍然不知道在移动、浏览器和桌面客户端等不同客户端类型的情况下究竟会发生什么!)但无论如何。在此方法中,当用户从设备 A 登录时,Api 会提供两个令牌。用户从设备 B 登录,Api 会传递新的令牌对。他返回设备 A,再次使用他的第一个令牌(仍然有效)。

方法 B:为每个用户保留 1 个刷新令牌。当用户从设备 B 登录时,Api 发回唯一的刷新令牌(只要用户提供有效的凭据,我就不应该关心设备,对吧?)

您能指出每种方法的优缺点吗?

refresh-token

19
推荐指数
1
解决办法
7571
查看次数

标签 统计

refresh-token ×1