是否可以在服务之间传递OAuth访问令牌?

beg*_*gie 7 authorization oauth access-token oauth-2.0 microservices

在SSO / OAuth /微服务的上下文中考虑以下情形:

  1. 用户使用OAuth的隐式流程成功登录了Web应用程序。
  2. Web应用程序从服务A和服务B请求一些数据,并传递用户的访问令牌以授权这两个请求。
  3. 服务A还调用服务B(传递相同的访问令牌!),以建立对初始Web App请求的响应。

现在,是否可以将用户的访问令牌从服务A传递到服务B?

还是服务A使用“客户凭证”授权来获取其自己的访问令牌以授权对服务B的调用?

更新:
请假定两个服务都属于同一组织,并且都信任同一台授权服务器。同样,这两种服务都位于验证访问令牌的同一API网关的后面。

Han*_* Z. 5

这取决于谁控制Web应用程序,服务A和服务B。如果它们都由同一方运行,则传递令牌没有问题,因为令牌位于同一安全域内。

但是,例如,如果服务B由第三方运行,则问题将成为问题,因为服务B的管理员可以提取访问令牌并像访问您的Web应用程序一样调用服务A,从而有可能访问它不应该访问的资源。

您还将注意到,如果服务A和服务B由您以外的2个不同方拥有,则您的Web应用程序还应该分别获取两个不同的访问令牌来调用服务A和服务B,以防止出现相同的安全问题。

因此,答案确实是:这取决于谁在控制什么,即令牌是否越过管理/安全域。