访问令牌和刷新令牌流

时间:2019-09-07 04:38:57

标签: security authentication oauth jwt refresh-token

我已经阅读了有关JWT以及访问令牌和刷新令牌的信息。我了解您必须在很短的时间(分钟)内设置访问令牌到期,并在到期时使用刷新令牌来获取新的访问令牌。

我不清楚三件事:

  1. 谁检查访问令牌是否到期?客户端是否通过发送过期的访问令牌和刷新来检查并请求新的访问代码?
  2. 谁检查刷新令牌的到期时间? (显然,刷新令牌也需要过期,尽管它需要更长的时间才能过期)。
  3. 从我的角度来看,如果刷新令牌已过期,则必须提示用户重新登录。在某些情况下(移动应用程序)需要避免这种情况。如何避免呢?

1 个答案:

答案 0 :(得分:3)

回答您的问题:

  • 访问令牌过期时,API使用访问令牌将返回错误。
  • API使用刷新令牌获取新的访问令牌将返回与刷新令牌相关的特定错误。
  • 关于刷新令牌的刷新,请参见以下答案。

通常,您需要为每个API调用进行一些错误处理。

关于刷新令牌

我进行了更多调查,这是我发现的东西:

  1. 首次登录并被授权获取访问令牌和刷新令牌(可选),如果访问令牌永不过期,则不需要刷新令牌。 => https://www.oauth.com/oauth2-servers/access-tokens/access-token-response/,最近(2019/11/16),我发现这确实取决于API提供程序的实现,例如PayPal,它们提供具有过期时间但没有刷新令牌的访问令牌,因此当访问令牌已过期,您必须再次获取新的访问令牌。
  2. 当访问令牌过期时,请使用刷新令牌来获取新的访问令牌并刷新令牌(可选)=> https://www.oauth.com/oauth2-servers/access-tokens/refreshing-access-tokens/。这次您有一个新的刷新令牌,这意味着您每次刷新访问令牌时都有一个新的刷新令牌。如果响应中没有新的刷新令牌,则第一步中只有旧的刷新令牌。
  3. 如果用户长时间不使用应用程序,则用户将没有机会刷新访问令牌和刷新令牌,然后用户需要等待很长时间才能刷新令牌过期。
  4. 就像@jwilleke所说的那样,即使用户不使用应用程序,服务器端或应用程序也可以自动为用户执行此操作,因此它将始终具有新的访问令牌和刷新令牌。