在OAuth2的上下文中,我想确切地知道应用程序的哪个组件被认为是“客户端”。
下面是rfc6749的相关运用
第1.1款:
客户端 代表资源所有者并经其授权提出受保护资源请求的应用程序。术语"client“并不意味着任何特定的实现特征(例如,应用程序是否在服务器、桌面或其他设备上执行)。
第2.1节:
客户端可以实现为分布式组件集,每个组件具有不同的客户端类型和安全上下文(例如,具有基于机密服务器的组件和基于公共浏览器的组件的分布式客户端)。如果授权服务器不为这些客户端提供支持,或者没有提供注册方面的指导,则客户端应将每个组件注册为单独的客户端。
场景1
下列哪一种说法是正确的?
场景2
下列哪一种说法是正确的?
发布于 2018-06-05 05:44:20
在场景1中,组件A1不是客户端,因为它不能从Google访问受保护的资源。但是组件A2是客户端。而且它是受保护的客户端,因为它不向资源所有者(简单地说是应用程序用户)公开客户端凭据。从您的终点来看,A1和A2都是一个单一的实体(一个应用程序)。但授权服务器的情况并非如此。
在场景2中,组件A1获取令牌,并且它也使用Google资源。因此,从授权服务器的角度来看,A1是客户机。而且它是一个公共客户端,因为它不能保护客户端凭据(如果有)(它是基于浏览器的。!)和以前一样,从你的角度来看,A1和A2是一个单一的实体。
现在考虑一个场景,您需要同时使用来自A1和A2组件的谷歌服务。现在您可以选择注册两个客户机,因为从授权服务器的角度来看,它可以看到两个不同的实体。一个人可以保护证书,而另一个人则不能。通过这样做,您可以充分利用OAuth客户端类型。做这件事,奥斯。服务器可能会为某些特性提供便利(我也没有完全意识到这一点)。这可能类似于在每个客户端注册两个重定向URL的能力。或者对机密和公开客户使用相同的客户身份。
https://stackoverflow.com/questions/50688432
复制相似问题