【发布时间】:2022-07-11 21:13:41
【问题描述】:
我有一个 Web 服务,它使用授权代码授权类型来获取资源服务器上用户数据的访问令牌以及刷新令牌。现在,我的 Web 服务会在某些时间点启动作业,这些作业也应该访问此用户数据。然而,
- 可能同时运行多个作业,
- 生成作业时用户不一定在附近,并且
- 作业可能会长期运行,特别是它们的寿命可能比访问令牌的有效期更长。
我的问题是:如何为每个工作提供访问令牌,以便
- 每次启动作业都不需要用户交互,并且
- 每个作业都可以在必要时刷新自己的访问令牌,而不会使其他作业的令牌失效?
虽然https://datatracker.ietf.org/doc/html/rfc6749#section-1.5 声明刷新令牌可用于获取“其他访问令牌”(强调我的),但规范并不清楚之前的访问令牌是否仍然有效,直到它到期日(好吧,如果没有,我不会称其为“附加”)。另外,根据https://datatracker.ietf.org/doc/html/rfc6749#section-6,如果服务器发出新的刷新令牌来防止重放攻击,那么旧的刷新令牌就不能再使用了,所以现在也许我有一个额外的访问令牌,但我不能真正通过访问令牌和作业的新刷新令牌,因为如果作业使用该刷新令牌,那么我的 Web 服务将无法再使用它。
是否有任何鲜为人知的流程允许创建这种无人值守的访问令牌?
【问题讨论】:
标签: oauth-2.0