【问题标题】:How to create additional OAuth2 Access Tokens without user interaction如何在没有用户交互的情况下创建额外的 OAuth2 访问令牌
【发布时间】: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


    【解决方案1】:

    正常访问令牌和刷新令牌有效期至到期时间。 还允许拥有多个访问和刷新令牌。 但是在以下情况下可以撤销刷新令牌

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

    因为您正在运行后台作业。我建议不要使用 JWT 令牌进行身份验证。相反,您可以拥有自定义的安全标准。 像自定义 API Key、UserAgent for Jobs 一样,您可以使用请求集或自定义标头传递用户信息。

    【讨论】:

      猜你喜欢
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 2012-01-15
      • 1970-01-01
      • 2015-09-12
      • 2018-11-13
      相关资源
      最近更新 更多