使用具有API

时间:2017-12-03 01:05:45

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

我一直在研究oauth2已经有一段时间没有找到完美的解决方案,想看看其他人之前是否做过这个。目前我在一个代码库中有两个应用程序。这些应用程序唯一共享的是身份验证。我要做的是为oauth2服务器创建第三个应用程序。然后我想将现有的应用程序分成两个应用程序。试着了解谷歌如何处理他们的oauth东西。因此域名就是这样的。

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

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

所以我有以下问题。

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

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

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

  4. 我试图将所有这一切都排除在外,并且找不到当oauth客户实际上是API以及它们也是网络应用时如何工作的一个很好的例子。也许我也在考虑它,并且为每个API请求进行额外调用就是这样。

    非常感谢任何有关此的帮助或教程。

1 个答案:

答案 0 :(得分:0)

The OAuth 2.0 Authorization Framework提供了五种授权方法:

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

我相信我们正在讨论Client credentials grant(我认为谷歌一般会使用它)。

让我们试着理解这个流程图: enter image description here

步骤[E]中的here

  

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

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

也许这些文件可以为您提供更多帮助:

  1. https://tools.ietf.org/html/rfc6749
  2. https://alexbilbie.com/guide-to-oauth-2-grants/
  3. 干杯!