如何在JWT身份验证中使用刷新令牌

时间:2019-04-09 12:55:12

标签: authentication jwt refresh-token

我对实现刷新令牌有一些疑问。我搜索了很多但什么都没找到:

  1. 我必须对刷新令牌使用jwt还是可以是哈希字符串?在刷新令牌中使用jwt有什么好处?

  2. 刷新令牌应该有一个到期时间吗?我想为remember me功能使用刷新令牌,因此,如果用户在一个月后回到网站或移动应用程序,则他应该能够以登录用户的身份继续。

  3. 我是否必须将刷新令牌发送给客户端? (因为我们将其存储在数据库中,然后在注销时将其删除)

2 个答案:

答案 0 :(得分:1)

我正在使用JWT令牌进行刷新。它具有不同的声明作为访问令牌。另外,我正在存储一些refreshKey声明,该声明也存储在数据库中。这种方法使我可以撤销此令牌,以防万一(例如,用户阻止功能)。

  1. 好处:您具有与访问令牌相同的验证机制(有效性检查,到期日期等)。
  2. 通常刷新令牌的到期时间非常长(比访问令牌更长的时间)。不建议使用长访问令牌,因为您无法将其撤消。只要您可以撤销令牌,就可以使用持久的刷新令牌。
  3. 是的,您必须将其发送给客户端,以使体系结构保持无状态(我想这是您使用JWT的目的)

答案 1 :(得分:1)

    客户端将使用
  1. 刷新令牌从服务器获取新的访问令牌。因此,刷新令牌的格式完全取决于颁发令牌的授权服务器。如果您要发布“访问令牌”和“刷新令牌”,则具有相同的格式(即JWT格式)会更容易。
  2. 刷新令牌必须具有到期时间。它可能比常规访问令牌的到期时间长得多。始终可以通过资源使它可配置。
  3. 您应将刷新令牌发送给客户端,以便客户端可以使用刷新令牌来请求新的令牌。