在微服务之间传播访问令牌

propagating access token between microservices

我正在开发微服务应用程序,其中客户端应用程序通过 POST 调用将 access token 发送到 orders 微服务。保存订单时,应调用库存微服务更新库存。 Inventory 微服务 updateIntentory 方法也应受到保护。

在这个用例中,我应该将相同的 access token 传播到 inventory 微服务并限制 api 访问更新库存还是应该使用 client-credentials 授予流程以允许 order 微服务中的 saveOrder 方法调用 inventory microservice.

中的 updateInventory 方法

注意:orderinventory 微服务都充当资源服务器。 什么是正确的做法。

好问题:

边界

如果您要调用属于其他人的外部 API,您肯定会使用客户端凭据来获取令牌,使您有权调用该 API。

微服务

如果数据所有者相同,那么您应该简单地转发访问令牌。这就是 OAuth 的工作方式:一个只需要简单代码的可扩展架构:

  • 客户端获取范围为多个 API
  • 的访问令牌
  • 每个 API 验证 JWT
  • 每个 API 验证自己的范围
  • 每个 API 信任 JWT 中的声明并使用它们进行授权

Scope Best Practices 文章针对真实世界的系统对此进行了解释。

高权限操作

为高安全性操作获取新令牌是很常见的,例如使用支付范围重定向用户。这应该是例外而不是规则。