在 Oauth2 中,资源所有者拥有的资源在哪里?

Posted

技术标签:

【中文标题】在 Oauth2 中,资源所有者拥有的资源在哪里?【英文标题】:In Oauth2 where are the resources that the resource owner owns? 【发布时间】:2018-12-11 09:18:37 【问题描述】:

我一直在尝试了解OAuth2 in my question here

假设我使用我的 Facebook 帐户通过 OAuth2 登录到一个网站(比如 Stack Overflow)。我了解我是“资源所有者”,但在这种情况下我拥有哪些资源?

我在 Facebook 中的东西还是我在 Stack Overflow 中的东西?

从this Oauth for dummies article 看来,资源在 Facebook,但从我的问题的答案看来,资源在 Stack Overflow。

资源和作用域一样吗?

[更新]

看着the overview here

我知道了

OpenID Connect 1.0 是 OAuth 2.0 之上的简单身份层 协议。它使客户能够验证最终用户的身份 基于授权服务器执行的身份验证,如 以及获取有关最终​​用户的基本配置文件信息 可互操作且类似于 REST 的方式。

还有

OpenID Connect 协议抽象地遵循以下步骤。

    RP(客户端)向 OpenID 提供者 (OP) 发送请求。 OP 对最终用户进行身份验证并获得授权。 OP 使用 ID 令牌进行响应,通常是访问令牌。 RP 可以向 UserInfo 端点发送带有访问令牌的请求。 UserInfo 端点返回有关最终用户的声明。

【问题讨论】:

***.com/questions/4727226/… 阅读 hueniverse.com/oauth-2-0-and-the-road-to-hell-8eec45921529 【参考方案1】:

假设我使用我的 Facebook 帐户登录到一个网站(比如 Stack 溢出)通过 OAuth2。我知道我是“资源所有者”,但是 在这种情况下,我拥有哪些资源?

首先,像 SO 这样的一些网站实际上使用 OpenID Connect 进行授权/身份验证,而不仅仅是 OAuth2.0。 (因为 OAuth2.0 的功能有一些限制,尤其是身份验证。)

在这种情况下,网站(SO)绝对是资源。然而,像栈溢出这样的网站使用基于 Oauth 2.0 的 OpenID Connect 进行身份验证/授权。它适用于所有客户(2C,而不是 2B)。在这种情况下,Facebook 帐户是 SO 中的社交帐户。这需要同时配置两个身份提供程序。

在 OAuth 中,广义地说,在您注册 SO 后,您可以访问 SO,您就是 SO 的所有者。但严格来说,我们只是SO中的普通用户,并不是本网站的真正所有者。这取决于此应用程序/网站的后端逻辑。 在 OpenID Connect 中,您是最终用户。

Resource Owner 只是 OAuth2.0 中的一个定义,我们可以结合实际场景来理解。它只是表示可以访问资源的用户。

我在 Facebook 中的东西还是我在 Stack Overflow 中的东西?

我假设我的东西是指用户个人资料。它应该在堆栈溢出中。如上所述,Facebook 帐户只是 SO 的社交帐户提供者。您可以使用社交帐户登录 SO,但 SO 还应为您创建用户配置文件并将其保存到数据库。

对于这个场景,应该是关于 OpenID Connect。我认为您应该在this documentation 中参考此协议。

另外,像您问题中的场景应该是 B2C web app/api。 Azure AD B2C 是可以实现此场景并帮助您了解 OpenID 连接协议的功能。

希望这会有所帮助!


更新:

通常,OP 是用户配置文件的来源。但是,RP 还需要获取用户配置文件并在其自己的数据库中创建一些用户配置文件。当然,正如 Chris 所说,Facebook 帐户是广义上的最终用户和资源所有者。

【讨论】:

感谢您的链接,但目前我认为我同意克里斯的观点,即资源必须在 Facebook 中。 是的,原来的用户信息在FaceBook,因为Facebook是OP,RP ***需要先得到Facebook的授权才能获取用户资料,并保存到自己的数据库中。实际上,用户配置文件也可能在两个地方。对不起,我的误解,我会更新我的答案:-)【参考方案2】:

在上述场景中,您作为资源所有者授权 Stack Overflow 作为客户端应用程序作为拥有的资源访问您的 Facebook 帐户>.

应用程序对您的 Facebook 帐户的访问仅限于授权访问的范围

【讨论】:

就像***.com/questions/4727226/…从奥拉夫买甜甜圈的例子,资源是钱而不是甜甜圈? 汽车是资源

以上是关于在 Oauth2 中,资源所有者拥有的资源在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

OAuth2.0笔记

公开类拥有的资源的正确方法是啥?

仅允许用户为他创建/拥有的资源创建其他用户和策略

在资源所有者密码流程中,用户可以处理范围吗?

如何使用oAuth2“资源所有者凭据授予”IOS APP?

2.为啥需要 OAuth2