oauth-2.0 如何在没有用户交互的情况下创建其他OAuth2访问令牌

wfsdck30  于 2022-10-31  发布在  其他
关注(0)|答案(1)|浏览(141)

我有一个Web服务,它使用授权代码授权类型来获取资源服务器上用户数据的访问标记以及刷新标记。现在,我的Web服务在某些时间点启动作业,这些作业也应该访问此用户数据。但是,

  • 一次可能有多个作业在运行,
  • 当产生作业时,用户不一定在附近,并且
  • 作业可能是长期运行的,特别是它们可能比访问令牌的有效期更长。

我的问题是:如何为每个作业提供访问令牌,以便

  • 每次作业启动都不需要用户交互,并且
  • 每个作业都可以在必要时刷新自己的访问令牌,而不会使其他作业的令牌失效?

虽然https://datatracker.ietf.org/doc/html/rfc6749#section-1.5声明可以使用刷新令牌来获得“* 附加 * 访问令牌”(强调我的),但规范并不清楚以前的访问令牌是否在到期日之前保持有效(如果不是,我就不称其为“附加”)https://datatracker.ietf.org/doc/html/rfc6749#section-6。那么旧的刷新令牌就不能再使用了,所以现在我可能有一个额外的访问令牌,但我不能真正将访问令牌和新的刷新令牌传递给作业,因为如果作业使用该刷新令牌,那么我的Web服务就不能再使用它了。
是否有一些鲜为人知的流允许这种无人值守的访问令牌创建?

pu3pd22g

pu3pd22g1#

通常,访问令牌和刷新令牌在到期之前都是有效的。也允许拥有多个访问令牌和刷新令牌。但是,在以下情况下可以吊销刷新令牌

  • 授权服务器已撤销刷新令牌
  • 用户已撤销其授权同意
  • 刷新令牌已过期
  • 资源的身份验证策略已更改

因为您正在运行后台作业。我建议您不要使用JWT令牌进行身份验证。相反,您可以使用自定义安全标准。与自定义API密钥一样,UserAgent for Jobs也可以通过requset或自定义头传递用户信息。

相关问题