OAuth2:保持Access_Token新鲜的最佳实践?

4jb9z9bj  于 2022-10-08  发布在  其他
关注(0)|答案(2)|浏览(154)

我正在创建一款集成了几个第三方OAuth2提供商(想想Zapier)的应用程序。用户通过OAuth2添加连接,OAuth2为我提供了刷新令牌和访问令牌,我将其存储在数据库中。

保持访问令牌更新的最佳做法是什么?我是否应该运行一个为每个连接每30分钟刷新一次访问令牌的异步作业(例如cron)?如果用户几天没有使用我的应用程序,我希望仍然能够访问他的第三方数据,而不需要他通过OAuth2的同意。

93ze6v8z

93ze6v8z1#

保持访问令牌更新的最佳做法是什么?我是否应该运行一个为每个连接每30分钟刷新一次访问令牌的异步作业(例如cron)?

不一定。等到您的API调用失败。检查是否有适当的响应,如提示您的访问令牌已失效/过期的“401 AUTHORIZED”。一旦发生这种情况,请使用刷新令牌来续订访问令牌。如果刷新令牌失败,则必须再次回退并要求用户重新登录。

刷新令牌可以具有不同的寿命。可能是几天到几个月。例如,检查谷歌的解释,其中提到了寿命较长的刷新令牌以及它们可能到期的情况。还可以查看Azure AD如何提到与令牌生存期相关的配置。

因此,几天内不使用APP的用户(例如:-离开并在周末后返回)可以通过适当的令牌生命周期配置进行处理。但要注意长期的、非托管令牌可能产生的威胁(例如:-由于令牌被盗)。

m1m5dgzv

m1m5dgzv2#

Oauth website有一个非常有用的答案
“Expires_in”值是访问令牌有效的秒数。访问令牌的有效期由您使用的服务决定,可能取决于应用程序或组织自己的策略。您可以使用此时间戳抢先刷新您的访问令牌,而不是等待令牌过期的请求失败。有些人喜欢在当前的访问令牌即将到期之前获得一个新的访问令牌,以便在API调用失败时保存一个HTTP请求。虽然这是一个非常好的优化,但如果访问令牌在预期时间之前到期,您仍然需要处理API调用失败的情况。访问令牌可能会因多种原因而过期,例如用户撤销应用程序,或者授权服务器在用户更改其密码时使所有令牌过期。

如果您发出API请求,而令牌已经过期,您将得到一个指示过期的响应。您可以检查此特定错误消息,然后刷新令牌并重试请求。

TLDR:我只会在请求失败时刷新令牌

相关问题