3

在 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 授权服务器。

  1. A 是否可以请求在其范围内具有 b.com 和 c.com 域中的资源的单个访问令牌,以便 A 可以使用相同的令牌访问 B 和 C?

  2. 你怎么能得到这个?

  3. 如果这不可能,是否有管理类似案例的最佳实践?

请注意,我知道 OAuth 2.0 规范允许在请求或发出令牌时指定多个范围,但这里的重点是 B 和 C 位于不同的域中,例如 b.com 和 c.com。

谢谢和亲切的问候,

科拉斯

4

1 回答 1

1
  1. 是的,这当然是可能的。
  2. 从规范

资源服务器用于验证访问令牌(以及任何错误响应)的方法超出了本规范的范围,但通常涉及资源服务器和授权服务器之间的交互或协调。

所以这完全取决于你的实现和令牌的类型,你只需要确保访问令牌是由你的授权服务器颁发的并且仍然有效。拥有不同的域对此没有任何影响。

可能最广泛使用的做法是在您的资源服务器上进行数据库查找,以查看访问令牌是否存储在那里(因此有效)并将该表与您的授权服务器同步(或直接为 A、B 和C)。3. 见 1. ;)

于 2012-10-19T15:32:47.030 回答