web-services - OAuth 2.0 多范围(客户端凭据案例)

标签 web-services api oauth-2.0 soa orchestration

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

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

  2. 如何获得?

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

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

谢谢和亲切的问候,

科拉兹

最佳答案

  1. 是的,这当然是可能的。
  2. 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/

相关文章:

PHP - 响应传入的 API 调用而不返回

java - 如何在不使用管理面板的情况下连接 Volusion DB

php - ADP API 无法通过 SSL 错误

java - OAuth2RestTemplate 身份验证问题获取 access_denied

Facebook 登录和 OpenID Connect

web-services - RESTful 创建或更新的正确 HTTP 方法?

mysql - 使用 Jersey(JAX-RS)、mySQL 和 Eclipse 开发 Java Web 服务

google-app-engine - Google Calendar API 日历 ID 和事件 ID

c# - 到 TCP 服务器的 Web 服务

web-services - 使用Grails Cxf客户端插件设置disableCNCheck