OAuth 刷新令牌最佳实践 [关闭]
Posted
技术标签:
【中文标题】OAuth 刷新令牌最佳实践 [关闭]【英文标题】:OAuth Refresh Token Best Practice [closed] 【发布时间】:2015-05-24 01:37:54 【问题描述】:我正在为一个项目实施 OAuth,我想知道处理刷新令牌的最佳方式。
我调用的 API 将返回一个带有 access_token、expires_in 和 refresh_token 的 JSON 对象。 所以我想知道,是不是更好:
计算access_token过期的时间,将其存储在数据库中。每次调用 API 时检查 access_token 是否过期,如果过期则使用 refresh_token 获取新的 access_token。
(附加问题:我如何确保我计算的令牌过期时间是准确的?因为 expire_in 值可能从 API 服务器生成密钥时开始,而不是从我收到它时开始。)
或
-
只需尝试每次使用 access_token 进行 API 调用,如果返回错误则使用 refresh_token。
我也愿意接受其他实施方案。
【问题讨论】:
【参考方案1】:本文解释了一些大型云服务的实践: http://blog.cloud-elements.com/oauth-2-0-access-refresh-token-guide
但是,IMO,刷新令牌应该有一个过期时间,比如 1 年。当使用刷新令牌发布新的访问令牌时,它应该会发生变化,但是,到期日期应该保持不变。当您永远需要刷新令牌时,只需发出具有最大日期值的刷新令牌。此外,请确保在发出新的刷新令牌时将旧的访问和刷新令牌标记为已删除。
【讨论】:
【参考方案2】:客户端应始终准备好处理从 API 返回的指示 access_token
验证失败的错误。根据实现,访问令牌可能已被撤销或声明无效。
然后客户端可以使用refresh_token
获取新的访问令牌并重试。所以你可以选择实现 1. 但它也不能让你从实现 2. 中解放出来,所以你可以选择坚持只实现 2 并尽量减少所需的代码量。
当然,如果你想尽可能地避免错误发生,你可以实现1.优化调用次数,减少整个过程中的错误次数。
【讨论】:
auth0.com/learn/refresh-tokens以上是关于OAuth 刷新令牌最佳实践 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章