api - OAuth 刷新 token 最佳实践

标签 api authentication oauth oauth-2.0 access-token

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

去年关闭。




Improve this question




我正在为一个项目实现 OAuth,我想知道处理刷新 token 的最佳方法。
我调用的 API 将返回一个带有 access_token、expires_in 和 refresh_token 的 JSON 对象。
所以我想知道,是否更好:

  • 计算 access_token 到期的时间,将其存储在数据库中。每次调用 API 时检查 access_token 是否过期,如果过期,则使用 refresh_token 获取新的 access_token。
    (附加问题:我如何确保我计算的 token 到期时间是准确的?因为 expire_in 值可能从 API 服务器生成 key 时开始,而不是从我收到它时开始。)

  • 或者
  • 每次尝试使用 access_token 进行 API 调用,如果返回错误,则使用 refresh_token。

  • 我也对实现这一点的其他选择持开放态度。

    最佳答案

    客户端应始终准备好处理从 API 返回的错误,该错误指示 access_token验证失败。根据实现,访问 token 可能已被撤销或以其他方式宣布无效。

    然后客户端可以使用 refresh_token获取新的访问 token 并重试。所以你可以选择实现 1. 但这并不能让你免于实现 2. ,所以你可以选择坚持只实现 2 并最小化所需的代码量。

    当然,如果你想尽可能的防止错误的发生,你可以实现1.优化调用次数,减少整个过程中的错误次数。

    关于api - OAuth 刷新 token 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29170013/

    相关文章:

    php - 如何使 Magento 页面完全空白?

    java - Java中图像的无损再现

    java - 无法通过 JAVA 对 w REST API 进行 PATCH

    authentication - 如何在 django channel 上使用 Knox token 身份验证对 websocket 连接进行身份验证?

    java - 每个用户可能有多个 session

    php - 尝试为管理员/用户 PHP 创建登录名

    facebook - 强制使用 facebook oAuth 和 Socialite 接收电子邮件

    python - 在 For 循环中增量追加到 JSON 文件

    android - Android 中有效的谷歌帐户 OAuth 2 token

    java - 如何使用 Spring Oauth2 将 UserDetails 附加到从 JWT token 接收的主体