【问题标题】:Proper Inter-service authorization适当的服务间授权
【发布时间】: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


    【解决方案1】:

    假设 placeOrder 端点调用 transferFunds 和 getProductDetails,我建议使用 DirectInvoke 和 SystemInvoke 两种权限。 DirectInvoke 只需要用户的 auth-token,SystemInvoke 需要用户身份和原始上游服务生成的 auth-token。

    您必须为需要调用的任何下游服务提供 SystemInvoke 授权。这当然会在您计算依赖关系图时产生错误,但希望您可以相当快地做到这一点。或者,您可以全面授权所有用户使用 SystemInvoke,但明确撤销您认为他们不应访问的服务。

    【讨论】:

      猜你喜欢
      • 2012-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-12
      • 2015-01-21
      • 1970-01-01
      • 2018-01-15
      相关资源
      最近更新 更多