【问题标题】:Spring Cloud: Confused DeputySpring Cloud:迷茫的副手
【发布时间】:2016-02-14 09:04:40
【问题描述】:

我有一个关于基于 Spring Cloud Netflix(Zuul、Eureka)、Spring Security OAuth 和 Spring Cloud Security 的生态系统微服务之间的安全下游调用的问题。

例如,我有 WEB 应用程序 (WEB) 和以下微服务:A、B、X、Y、Z。

地点:

  • 所有服务(A、B、X、Y、Z)都部署在外围并且可以直接物理访问彼此。
  • 基于 Netflix Zuul 的 API 网关对部署到外围的所有服务执行身份验证功能。
  • 所有服务都接受 OAuth 令牌进行授权。

还有:

  1. A 应该有权访问服务 X 和 Y(一些操作)
  2. B 应该有权访问服务 Y 和 Z(某些操作)
  3. 必须在经过身份验证的用户的上下文中调用所有服务(用于授权)。

而我想解决以下问题(迷惑副手问题):

  1. 服务 A 不能对服务 Z 执行任何操作(即使经过身份验证的用户对 Z 具有必要的权限)。

例如: 用户有权对服务 Z 执行 READ、WRITE、DELETE 操作。

但服务 A 不应该代表经过身份验证的用户为服务 Z 执行任何操作。

  1. 服务 A 应该只能执行服务 X 的授权操作。

例如:

用户有权对服务 X 执行 READ、WRITE、DELETE 操作。

但是服务 A 应该只能代表经过身份验证的用户对服务 X 执行 READ 操作。

是否有任何开箱即用的解决方案(使用当前技术)来解决这些问题?

【问题讨论】:

    标签: spring-security-oauth2 spring-cloud


    【解决方案1】:

    您必须记住,从逻辑上讲,执行这些操作的是用户,并且他必须隐式或显式地授权它们。考虑到这一点,我至少知道一种可行的方法(cloudfoundry 中的 UAA 就是这样做的)。您可以扩展作用域的命名空间以包含服务 ID,例如“X.READ”、“Z.WRITE”。

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-25
      • 1970-01-01
      • 2012-02-20
      • 1970-01-01
      相关资源
      最近更新 更多