繁体   English   中英

oauth2策略,在具有许多具有API的客户端的轨道上使用ruby

[英]oauth2 strategy with ruby on rails with many clients that have an API

我已经研究了一段时间的oauth2,还没有想出完美的解决方案,而是想看看以前是否有人这样做过。 目前,我在一个代码库中有两个应用程序。 这些应用程序共享的唯一内容是身份验证。 我正在寻找的是为oauth2服务器创建第三个应用程序。 然后,我想将现有应用程序分为两个应用程序。 尝试遵循Google处理oauth内容的方式。 因此域将是这样的。

我在这两篇关于门卫和设计的文章中找到了一些不错的信息。 目前,我正在使用devise,以便使该部分更加容易。

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

所以我有以下问题。

  1. 如果app1需要使用帐户子域进行验证,那么从API角度来看,这意味着我需要在每个请求上调用oauth2服务器应用程序吗? 这似乎有很多开销。 是Google这样做的方式还是他们有一些花招?

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

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

我正在尝试清除所有这些信息,并且还没有找到一个很好的示例说明当oauth客户端实际上是API以及它们也是Web应用程序时,该方法如何工作。 也许我也考虑过了,对每个API请求进行额外的调用才是方法。

任何帮助或教程对此将不胜感激。

OAuth 2.0授权框架提供了五种授予技术:

  • 授权码授予
  • 隐性补助
  • 资源所有者凭证授予
  • 客户凭证授予
  • 刷新令牌授予

我相信我们正在讨论有关Client credentials grant (我认为Google通常会使用它)。

让我们尝试了解此流程图: 在此处输入图片说明

所以, 在这里 ,在步骤[E]

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

这意味着它实际上不会在每个请求上都命中Authorization Server 仅当client发现令牌已过期时,它才会访问授权服务器。 因此,如果我们删除自身,它将使令牌过期!

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

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

干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM