Spring Cloud Zuul 作为 API 网关

Posted

技术标签:

【中文标题】Spring Cloud Zuul 作为 API 网关【英文标题】:Spring Cloud Zuul as API gateway 【发布时间】:2017-07-27 07:55:17 【问题描述】:

我是 Spring Cloud 新手,即将使用 Spring Cloud 堆栈(即 Eureka、Zuul、Ribbon 和 Hystrix)以微服务方式启动一个新项目。

应用程序将有一个愚蠢的 UI,它将与后端服务交互以完成工作,后端服务本质上是休息的,并将使用 Spring 安全支持的基于令牌的身份验证(使用 JWT),因此以下将成为应用的流程

    身份验证服务:- 身份验证服务将负责验证用户和验证访问令牌。 Rest services:其他服务将有自己的授权机制,即给定用户(通过 JWT 令牌标识)是否有权访问请求的资源。

我已经使用 JWT 和 Spring 安全过滤器来实现相同但无法映射 Zuul 将如何适应这张图片,在查看文档时我遇到了 ZuulFilters,它可以用来实现这一点,但我需要使用它我的身份验证/授权机制在同一个地方,即 Zuul,但我希望我的身份验证在 Zuul 并且具有分布式授权,这将使我免于将每个剩余资源配置到 DB 中的角色映射,并为每个请求在 zuul 加载/读取。

我浏览了一些博客/示例,但其中大多数都在谈论 SSO 的东西,有人可以通过博客文章或示例启发我吗,感谢任何帮助。

【问题讨论】:

看看这个可能对你有帮助cloud.spring.io/spring-cloud-security 这也是..***.com/questions/30327269/… 【参考方案1】:

据我了解,您希望将 zuul 用作 api 网关。编写一个 zuulFilter 并通过身份验证服务检查传入请求的令牌,然后将请求传递给实际的微服务(如果提供了令牌并且有效)。如果其中有必要的角色/权限,微服务可以检查令牌。

短版是;如果你想在每个微服务中授权,zuul 在这种情况下没有太大的作用(只是一个简单的 api 网关。)

【讨论】:

感谢您的回复@barbakini,我只使用了这种方法。

以上是关于Spring Cloud Zuul 作为 API 网关的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud:API网关服务——Spring Cloud Zuul

spring cloud zuul

Spring Cloud 7:Gateway

基于spring-cloud的微服务API网关zuul

Spring Cloud Zuul微服务网关的API限流

Zuul & Spring Cloud Gateway & Linkerd性能对比