【问题标题】:How do I make sure to only create one OAuth 2.0 token at a time?如何确保一次只创建一个 OAuth 2.0 令牌?
【发布时间】:2022-11-02 03:32:41
【问题描述】:

我有多个进程(一些不受我控制)需要访问一个 API,该 API 一次只允许我创建一个 OAuth 2.0 令牌。如果我创建额外的令牌,我就有将用户踢出应用程序的风险。你对如何管理这个有什么建议?

我想我需要创建一个中间层来管理令牌并将信息传递给 API。这很好,但即便如此,如果每秒有多个请求进入这个中间层,我如何确保我一次只有一个活动令牌?我不会冒一个调用创建令牌的风险,因为不存在(因此无法刷新)同时另一个调用正在执行相同的操作?

【问题讨论】:

    标签: c# oauth-2.0 oauth token bearer-token


    【解决方案1】:

    鉴于有多个进程,oauth 端点是所有进程相遇的地方。似乎是解决这个问题的合乎逻辑的地方。

    首先,我将创建一个 oAuth 代理(如您所说),因此所有进程都使用它来获取访问/刷新令牌。该代理将用于获取原始访问/刷新令牌和处理刷新。

    至于使访问令牌完全是一回事,我会使用这个逻辑:

    • 最初,代理没有访问令牌,因此当多个进程来获取一个时,代理将持有所有这些线程,并从原始 oAuth 服务器请求一个访问/刷新令牌
    • 由于您控制代理,您可以同步线程以确保它们都等待访问令牌可用
    • 此时每个进程都将拥有相同的访问令牌
    • 我会让代理了解访问令牌何时过期,因此当进程请求令牌时,如果令牌已过期(但不是之前),那么代理将刷新令牌、缓存并返回
    • 代理在旧令牌过期之前不会请求新令牌这一事实;这保证不会有超过一个访问令牌同时可用

    【讨论】:

      猜你喜欢
      • 2020-12-04
      • 2011-11-17
      • 2023-04-10
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      • 2021-11-13
      • 2010-09-26
      相关资源
      最近更新 更多