【发布时间】:2020-01-10 01:45:30
【问题描述】:
我的问题是如何在不破坏应用程序逻辑的情况下正确地进行服务间授权。
示例 1:您设置了一个基于令牌的身份验证系统,其中涉及通过 API 网关和调用链中的所有微服务转发您的身份验证令牌。每个微服务都根据经过身份验证的用户身份执行自己的授权逻辑。
问题 1:如何确保服务之间的授权规则不会相互冲突?例如:服务 1 有一个端点:“placeOrder”,它依次调用服务 2 的“transferFunds”和服务 3 的“getProductDetails”。现在,给定的用户身份仅被授权使用服务 1 的“placeOrder”功能,这是一个 0 信任环境,用户无权访问指定的服务 2 和 3 端点,但仍需要调用这些端点来完成初始请求服务 1.
现在解决此问题的一种方法是在服务 1 中临时提升权限以允许调用。但在某些情况下,这似乎违背了目的,因为突然间,链中的每个后续调用都是作为可以执行任何操作并且知道将在链中间接调用哪些其他服务的技术用户。 我想知道是否有更好的解决方案可以避免不利因素,同时保持服务之间的 0 信任。
【问题讨论】:
标签: authentication architecture authorization microservices