在 OAuth 2.0 设置中,假设您有一个应用程序在“客户端凭据授予”流程之后执行“访问 token 请求”。换句话说,我们有一个应用程序 A 访问其他应用程序公开的一些 API;根据 Oauth 2.0 的规定,在这种情况下,“应用程序 A”仅使用其客户端凭据,而不使用用户的凭据。
现在,假设应用程序 A 想要访问从两个或多个应用程序(假设应用程序 B 和 C)公开的 API(例如:应用程序 A 协调对 B 和 C 的 API 的访问以提供组合服务)。 此外,B 和 C 位于不同域,例如 b.com 和 c.com,但 A、B 和 C 共享一个公共(public) OAuth 授权服务器。
A 是否可以请求在其范围内包含 b.com 和 c.com 域中的资源的单个访问 token ,以便 A 可以使用相同的 token 访问 B 和 C?
如何获得?
如果这不可能,是否有管理类似案例的最佳实践?
请注意,我知道 OAuth 2.0 规范允许在请求或颁发 token 时指定多个范围,但这里的要点是 B 和 C 位于不同的域中,例如 b.com 和 c.com。
谢谢和亲切的问候,
科拉兹
最佳答案
- 是的,这当然是可能的。
- From the specification :
The methods used by the resource server to validate the access token (as well as any error responses) are beyond the scope of this specification, but generally involve an interaction or coordination between the resource server and the authorization server.
所以这完全取决于您的实现和 token 的类型,您只需确保访问 token 是由您的授权服务器颁发的并且仍然有效。拥有不同的域对此没有任何影响。
可能最广泛使用的做法是在您的资源服务器上进行数据库查找以查看访问 token 是否存储在那里(因此有效)并将该表与您的授权服务器同步(或直接使用相同的数据库进行 A 、B 和 C)。 3. 参见 1。;)
关于web-services - OAuth 2.0 多范围(客户端凭据案例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12975176/