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