【发布时间】: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 令牌进行授权。
还有:
- A 应该有权访问服务 X 和 Y(一些操作)
- B 应该有权访问服务 Y 和 Z(某些操作)
- 必须在经过身份验证的用户的上下文中调用所有服务(用于授权)。
而我想解决以下问题(迷惑副手问题):
- 服务 A 不能对服务 Z 执行任何操作(即使经过身份验证的用户对 Z 具有必要的权限)。
例如: 用户有权对服务 Z 执行 READ、WRITE、DELETE 操作。
但服务 A 不应该代表经过身份验证的用户为服务 Z 执行任何操作。
- 服务 A 应该只能执行服务 X 的授权操作。
例如:
用户有权对服务 X 执行 READ、WRITE、DELETE 操作。
但是服务 A 应该只能代表经过身份验证的用户对服务 X 执行 READ 操作。
是否有任何开箱即用的解决方案(使用当前技术)来解决这些问题?
【问题讨论】:
标签: spring-security-oauth2 spring-cloud