首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OAuth2:到底什么是“客户端”?

OAuth2:到底什么是“客户端”?
EN

Stack Overflow用户
提问于 2018-06-04 20:38:42
回答 1查看 202关注 0票数 2

在OAuth2的上下文中,我想确切地知道应用程序的哪个组件被认为是“客户端”。

下面是rfc6749的相关运用

第1.1款:

客户端 代表资源所有者并经其授权提出受保护资源请求的应用程序。术语"client“并不意味着任何特定的实现特征(例如,应用程序是否在服务器、桌面或其他设备上执行)。

第2.1节:

客户端可以实现为分布式组件集,每个组件具有不同的客户端类型和安全上下文(例如,具有基于机密服务器的组件和基于公共浏览器的组件的分布式客户端)。如果授权服务器不为这些客户端提供支持,或者没有提供注册方面的指导,则客户端应将每个组件注册为单独的客户端。

场景1

  • 我的应用程序(A)包括一个基于浏览器的前端(组件A1)和一个后端API (组件A2)。
  • 后端(A2)从谷歌的授权服务器(G1)获取访问令牌(授权代码授予),以访问谷歌的资源服务器(G2)

下列哪一种说法是正确的?

  1. “客户”是指(A)项。(A)是机密的,由一个公共组成部分(A1)和一个机密组成部分(A2)组成。
  2. "client“指(A2)。(A2)是一个机密客户端。
  3. 将(A1)称为客户端是不正确的,因为(A1)没有向(G2)发出受保护的资源请求。

场景2

  • 我的应用程序(A)包括一个基于浏览器的前端(组件A1)和一个后端API (组件A2)。
  • 基于浏览器的前端(A1)从Google的授权服务器(G1)获取访问令牌(隐式格兰特),以访问Google的资源服务器(G2)。

下列哪一种说法是正确的?

  1. “客户”是指(A)项。(A)是公共客户端,由公共组件(A1)和机密组件(A2)组成。
  2. "client“指(A1)。(A1)是一个公共客户。
  3. 将(A2)称为客户端是不正确的,因为(A2)没有向(G2)发出受保护的资源请求。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 05:44:20

在场景1中,组件A1不是客户端,因为它不能从Google访问受保护的资源。但是组件A2是客户端。而且它是受保护的客户端,因为它不向资源所有者(简单地说是应用程序用户)公开客户端凭据。从您的终点来看,A1和A2都是一个单一的实体(一个应用程序)。但授权服务器的情况并非如此。

在场景2中,组件A1获取令牌,并且它也使用Google资源。因此,从授权服务器的角度来看,A1是客户机。而且它是一个公共客户端,因为它不能保护客户端凭据(如果有)(它是基于浏览器的。!)和以前一样,从你的角度来看,A1和A2是一个单一的实体。

现在考虑一个场景,您需要同时使用来自A1和A2组件的谷歌服务。现在您可以选择注册两个客户机,因为从授权服务器的角度来看,它可以看到两个不同的实体。一个人可以保护证书,而另一个人则不能。通过这样做,您可以充分利用OAuth客户端类型。做这件事,奥斯。服务器可能会为某些特性提供便利(我也没有完全意识到这一点)。这可能类似于在每个客户端注册两个重定向URL的能力。或者对机密和公开客户使用相同的客户身份。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50688432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档