security - 访问 token 和刷新 token 流程

标签 security authentication oauth jwt refresh-token

我已阅读有关 JWT 和访问 token 以及刷新 token 的信息。我知道您必须在很短的时间(分钟)内设置访问 token 过期,并在过期时使用刷新 token 获取新的访问 token 。

我不清楚三件事:

  • 谁检查访问 token 是否过期?客户端是否通过发送过期的访问 token 和刷新来检查并请求新的访问代码?
  • 谁检查刷新 token 是否过期? (显然刷新 token 也需要过期,尽管过期需要更长的时间)。
  • 从我的角度来看,如果刷新 token 已过期,则必须提示用户重新登录。这是在某些场景(移动应用程序)中需要避免的事情。如何避免?
  • 最佳答案

    回答你的问题:

  • 当访问 token 过期时,API 使用访问 token 将返回错误。
  • API 使用刷新 token 获取新的访问 token 将返回与特定刷新 token 相关的错误。
  • 关于刷新 token 的刷新,请看下面的回答。

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

    关于刷新 token 的刷新

    我调查了更多,这就是我发现的:
  • 首次登录并授权获取访问 token 和刷新 token (可选),如果访问 token 永不过期,则不需要刷新 token 。 => https://www.oauth.com/oauth2-servers/access-tokens/access-token-response/ ,最近(2019/11/16),我发现这真的取决于API提供商的实现,例如PayPal,他们提供了过期时间但没有刷新 token 的访问 token ,因此当访问 token 过期时,您必须再次获取新的访问 token 。
  • 当访问 token 过期时,使用刷新 token 获取新的访问 token 和刷新 token (可选)=> https://www.oauth.com/oauth2-servers/access-tokens/refreshing-access-tokens/ .这次你有一个新的刷新 token ,这意味着你每次刷新访问 token 时都会有一个新的刷新 token 。如果响应没有新的新 token ,则您只有第一步中的旧刷新 token 。
  • 如果用户长时间不使用该应用程序,则用户没有机会刷新访问 token 和刷新 token ,则用户需要在刷新 token 过期后重新登录。
  • 就像@jwilleke 说的,即使用户不使用应用程序,服务器端或应用程序可以自动为用户完成,那么它将始终拥有新的访问 token 和刷新 token 。
  • 关于security - 访问 token 和刷新 token 流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57830729/

    相关文章:

    python - 使用 Rauth、Python 针对 Vimeo API 时出现 OAuth 签名无效错误

    php - 在 PHP 的邮件命令中使用未经过滤的发布数据是否有任何危险?

    django - Web 应用程序的 GDPR 合规性(Vue.js、Django、Heroku)

    authentication - 为什么用户在 Yii 中关闭浏览器后没有注销?

    ruby-on-rails - 关于 HTTP 身份验证方案的建议(使用请求 header )

    spring - 扩展的 OAuth2RestTemplate 无法连接

    mysql - 为什么你会选择在应用层散列密码,而不是使用 mysql SHA2()?

    python-3.x - 当默认加载程序已经变得更加安全时,为什么PyYAML 5.1会引发YAMLLoadWarning?

    ios - AFURLSessionManager 身份验证

    node.js - 从 passportjs 中的刷新 token 获取 oauth 访问 token