OAuth 2.0 多范围(客户端凭据案例)
Posted
技术标签:
【中文标题】OAuth 2.0 多范围(客户端凭据案例)【英文标题】:OAuth 2.0 multiple scopes (client credentials case) 【发布时间】:2012-10-10 02:56:45 【问题描述】:在 OAuth 2.0 设置中,假设您有一个应用程序按照“客户端凭据授予”流程执行“访问令牌请求”。换句话说,我们有一个应用程序 A 访问了其他应用程序公开的一些 API;根据 Oauth 2.0 的规定,在这种情况下,“应用程序 A”仅使用其客户端凭据,而不是用户的凭据。
现在,假设应用程序 A 想要访问从两个或多个应用程序公开的 API,假设应用程序 B 和 C(例如:应用程序 A 编排对 B 和 C 的 API 的访问以提供组合服务)。 B 和 C 也在不同的域中,例如 b.com 和 c.com,但 A、B 和 C 共享一个共同的 OAuth 授权服务器。
A 是否可以请求在其范围内同时具有 b.com 和 c.com 域中的资源的单个访问令牌,以便 A 可以使用相同的令牌访问 B 和 C?
你如何获得这个?
如果不可能,是否有管理类似案例的最佳实践?
请注意,我知道 OAuth 2.0 规范允许在请求或发出令牌时指定多个范围,但这里的重点是 B 和 C 位于不同的域中,例如 b.com 和 c.com。
感谢和亲切的问候,
科拉兹
【问题讨论】:
【参考方案1】:-
是的,这当然是可能的。
From the specification:
资源服务器用于验证访问令牌(以及任何错误响应)的方法超出了本规范的范围,但通常涉及资源服务器和授权服务器之间的交互或协调。
所以这完全取决于您的实现和令牌的类型,您只需确保访问令牌是由您的授权服务器颁发的并且仍然有效。拥有不同的域对此没有任何影响。
可能最广泛使用的做法是在您的资源服务器上进行数据库查找,以查看访问令牌是否存储在那里(因此有效)并将该表与您的授权服务器同步(或直接使用相同的数据库 A , B 和 C)。 3. 见 1. ;)
【讨论】:
以上是关于OAuth 2.0 多范围(客户端凭据案例)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 OAuth 2.0 客户端凭据流和带有 .net 核心的 JWT 证书连接到 Oracle Netsuite