术语“资源所有者”在OAuth v2.0 Specification中定义为“能够授予对受保护资源的访问权限的实体。当资源所有者是某人时,它被称为最终用户。 “
我的问题是,资源所有者何时不是最终用户?我希望通过可能是真实用例的例子来解释。例如,如果受保护资源是Facebook用户的照片,那么资源所有者 Facebook或上传照片的Facebook用户是?此外,如果该人甚至不是正在实施OAuth的应用程序的用户,为什么资源所有者(也是一个人)被视为最终用户?而且,如果Facebook用户是资源所有者,那么Facebook在此交易中扮演什么角色?
答案 0 :(得分:25)
资源所有者可以是一台机器,而不仅仅是人。在许多情况下,整个OAuth流程中都没有人参与,特别是在企业设置中。至少,当我在RFC 5849(以及后来的OAuth 2.0)中引入该术语时,这就是我的意思。
答案 1 :(得分:9)
考虑资源所有者是公司的情况,可能是具有启用/禁用资源访问权限的策略的公司。
考虑一个艺术的例子;假设你想用一件艺术品让你的住所看起来更好;您可以去几个地方(例如,Costco),在那里您可以选择一件艺术品,在您选择的介质上打印出您选择的尺寸,然后送到您的家中。
这就是事情; Costco不是该艺术品许可权的所有者;这不属于他们的业务领域。他们卖东西,他们不收集艺术品。他们所做的是与内容所有者(艺术许可的所有者)协商,以获得在印刷品中使用该艺术品的权利,然后他们创建并交付给您。您向Costco支付艺术品费用;然后,Costco向您的许可人支付部分付款,以获得使用该艺术品的权利。
在您已与资源所有者建立关系的情况下,这也适用;例如,假设您已经谈判并购买了某些音乐的权利。你不是音乐的拥有者,因为你没有权利转售音乐;但你确实有权收听它(这是标准的DRM情况)。现在让我们说你想通过网站播放音乐;你可以向网站请求该音乐;网站可以与您的身份联系内容所有者(许可人,实际上,但实际上是相同的);然后,内容所有者可以根据您的条款决定是否授予您网站对内容的访问权限。
希望清除一些事情。
答案 2 :(得分:6)
考虑一下你有一个Facebook应用程序。
现在,您希望获得有关所有用户活动的统计信息(换句话说,“见解”)。
在这种情况下,资源(“App Insights”)归您的应用所有,而不是每个用户。
因此,您的应用会获得客户端访问令牌(称为双腿OAuth)并访问其洞察信息。
Facebook还提供“Page Insights”作为页面粉丝活动的资源。在这种情况下,资源由页面拥有,而不是由网页粉丝拥有,因此您的应用会获得页面的访问令牌。
但是我能理解你的困惑。
以前Facebook允许使用页面所有者的访问令牌或页面的访问令牌来访问页面洞察。(这意味着Facebook将其作为页面和页面的资源处理所有者;现在只允许页面的访问令牌)
最后,在所有情况下,Facebook充当“授权服务器”和“资源服务器”。它对用户进行身份验证,并获得客户对其资源的访问权限。 (授权服务器)。它也提供资源。(资源服务器)
答案 3 :(得分:3)
我的公司与屏幕共享视频会议提供商合作。我们的用户可以将其解决方案用作我们产品的一部分。我们与第三方工具之间的通信是通过使用两条腿OAuth调用API来实现的。
我们不是一个人,更好的措辞可能是外部系统,但我们绝对是资源所有者 - 因为我们为我们使用的资源付费,而我们是授权调用API的实体。
此外,在你提到的Facebook例子中。资源所有者是上传照片的人。那个人也是最终用户。对于第三方应用程序发出API调用有益的人。
答案 4 :(得分:2)
我想通过一个与OAuth 2.0相关的更具体的例子来强调@Paul Sonier的坚实回应。
在企业环境中,公司员工可能希望在公司企业帐户的支持下访问文件存储服务(例如Google Drive,Box.com,DropBox等)上的内容。
此类服务可能已经具有单点登录安排,其中用户与服务提供商的帐户是批量动态配置或配置的。
重要的是,员工通常会签署他们向公司出示的任何文件或其他工作的所有权利。在法律意义上,公司而不是最终用户是资源所有者。
在这种情况下,OAuth2授权步骤是多余的。该公司与服务提供商签订合同,可以合理地说,“考虑从我们的IDP认证的任何用户会话作为我们所有应用程序的预授权”。服务提供商可以简单地跳过这些应用程序的授权步骤,顺便说一句,为成千上万的员工节省了一个令人困惑的步骤,并给支持台打了很多电话等。
在一天结束时,授权授予只是数据存储中的条目,并受制于OAuth 2.0规范之外的策略。 OAuth 2.0规范中没有任何内容可以阻止或阻止此类“批量授权”。这只是服务提供商和真正资源所有者之间的协议问题。
请注意,此应用程序级别授权与文件和目录权限不同,后者通常也在带外管理。即存储服务提供用于管理文件和目录的用户和组级访问的UI。然后,OAuth 2.0客户端获取用户级令牌(大多数仅支持面向消费者的“授权代码”授权类型)。
答案 5 :(得分:1)
来自规范:
资源所有者 - 能够授予对受保护资源的访问权限的实体。当资源所有者是某人时,它被称为最终用户
根据这个定义,我读到许多实体可能能够授予对受保护资源的访问权。
正如您所指出的,人类的例子很容易理解 - 当您请求访问受保护的照片时,只有一个实体能够授予访问权限。那个实体就是我。我必须执行一些操作来批准您的请求。根据应用程序的不同,这可能涉及单击按钮,发送文本消息,说话,拍手等等。我的行动被捕获的机制&处理与此定义无关。
继续此示例,假设另一个实体可以授予对受保护照片的访问权限。想象一下,您是照片托管服务的值得信赖的商业伙伴。或许你是照片托管公司的另一个团队,你的服务器在同一个数据中心内运行。在这种情况下,可能需要自动授予您受保护照片的权限。如果资源服务器决定自动授予您访问权限(因为您是谁),这将代表第二个实体。在这里,这个非人类实体决定(尽其所能)你的访问请求应该被自动接受。