【问题标题】:oauth2 strategy with ruby on rails with many clients that have an APIoauth2 策略与 ruby​​ on rails 与许多具有 API 的客户端
【发布时间】:2018-05-16 18:59:19
【问题描述】:

我研究 oauth2 已经有一段时间了,还没有想出完美的解决方案,想看看有没有其他人以前做过。目前我在一个代码库中有两个应用程序。这些应用程序共享的唯一内容是身份验证。我要做的是为 oauth2 服务器创建第三个应用程序。然后我想将现有的应用程序分成两个应用程序。试图了解 Google 如何处理他们的 oauth 内容。所以域会是这样的。

我在这两个帖子中发现了一些关于门卫和设计的好信息。目前我正在使用设计,以便使这部分更容易。

因此,这些应用程序 app1 和 app2 中的每一个都将具有需要对其使用进行身份验证的 API。

所以我有以下问题。

  1. 如果 app1 需要使用帐户子域进行验证,这是否意味着从 API 的角度来看,我需要在每个请求上调用 oauth2 服务器应用程序?这似乎是很多开销。这是谷歌的做法还是他们有什么技巧?

  2. app1 和 app2 是否各自负责自己的会话超时?如果 app1 会话有效,但用户通过转到 auth2 服务器应用程序直接删除了他们的帐户,会发生什么情况?

  3. 如果 app1 和 app2 负责会话,那么他们是否还想回调帐户 oauth2 服务器以验证用户是否仍然存在?

我正在尝试清除所有这些内容,但还没有找到一个很好的例子来说明当 oauth 客户端实际上是 API 并且它们也是 Web 应用程序时这将如何工作。也许我也想多了,对每个 API 请求进行额外调用是一种方式。

任何有关这方面的帮助或教程将不胜感激。

【问题讨论】:

    标签: ruby-on-rails authentication devise oauth-2.0 doorkeeper


    【解决方案1】:

    The OAuth 2.0 Authorization Framework 提供五种授权技术:

    • 授权码授予
    • 隐式授权
    • 资源所有者凭据授予
    • 客户端凭据授予
    • 刷新令牌授权

    我相信我们的讨论是关于Client credentials grant(我认为谷歌通常使用它)。

    让我们试着理解这个流程图:

    所以,here 在步骤[E]

    重复步骤 (C) 和 (D) 直到访问令牌过期。如果 客户端知道访问令牌已过期,它跳到步骤(G); 否则,它会发出另一个受保护的资源请求。

    这意味着它实际上并没有在每个请求上命中Authorization Server。只有当client 发现令牌已过期时,它才会访问授权服务器。所以,如果我们删除自己,它会使令牌过期!

    也许这些文档可以帮助你更多:

    1. https://www.rfc-editor.org/rfc/rfc6749
    2. https://alexbilbie.com/guide-to-oauth-2-grants/

    干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-01
      • 2017-01-16
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2020-08-20
      相关资源
      最近更新 更多