在微服务之间传播访问令牌
propagating access token between microservices
我正在开发微服务应用程序,其中客户端应用程序通过 POST
调用将 access token
发送到 orders
微服务。保存订单时,应调用库存微服务更新库存。 Inventory 微服务 updateIntentory
方法也应受到保护。
在这个用例中,我应该将相同的 access token
传播到 inventory
微服务并限制 api 访问更新库存还是应该使用 client-credentials
授予流程以允许 order
微服务中的 saveOrder
方法调用 inventory microservice
.
中的 updateInventory
方法
注意:order
和 inventory
微服务都充当资源服务器。
什么是正确的做法。
好问题:
边界
如果您要调用属于其他人的外部 API,您肯定会使用客户端凭据来获取令牌,使您有权调用该 API。
微服务
如果数据所有者相同,那么您应该简单地转发访问令牌。这就是 OAuth 的工作方式:一个只需要简单代码的可扩展架构:
- 客户端获取范围为多个 API
的访问令牌
- 每个 API 验证 JWT
- 每个 API 验证自己的范围
- 每个 API 信任 JWT 中的声明并使用它们进行授权
Scope Best Practices 文章针对真实世界的系统对此进行了解释。
高权限操作
为高安全性操作获取新令牌是很常见的,例如使用支付范围重定向用户。这应该是例外而不是规则。
我正在开发微服务应用程序,其中客户端应用程序通过 POST
调用将 access token
发送到 orders
微服务。保存订单时,应调用库存微服务更新库存。 Inventory 微服务 updateIntentory
方法也应受到保护。
在这个用例中,我应该将相同的 access token
传播到 inventory
微服务并限制 api 访问更新库存还是应该使用 client-credentials
授予流程以允许 order
微服务中的 saveOrder
方法调用 inventory microservice
.
updateInventory
方法
注意:order
和 inventory
微服务都充当资源服务器。
什么是正确的做法。
好问题:
边界
如果您要调用属于其他人的外部 API,您肯定会使用客户端凭据来获取令牌,使您有权调用该 API。
微服务
如果数据所有者相同,那么您应该简单地转发访问令牌。这就是 OAuth 的工作方式:一个只需要简单代码的可扩展架构:
- 客户端获取范围为多个 API 的访问令牌
- 每个 API 验证 JWT
- 每个 API 验证自己的范围
- 每个 API 信任 JWT 中的声明并使用它们进行授权
Scope Best Practices 文章针对真实世界的系统对此进行了解释。
高权限操作
为高安全性操作获取新令牌是很常见的,例如使用支付范围重定向用户。这应该是例外而不是规则。