Spring Cloud Eureka Netflix zuul 过滤器

Posted

技术标签:

【中文标题】Spring Cloud Eureka Netflix zuul 过滤器【英文标题】:Spring Cloud Eureka Netflix zuul filters 【发布时间】:2020-04-15 17:27:13 【问题描述】:

我有三个使用 spring Eureka 服务器和 zuul 作为网关的 spring boot 微服务。我有身份验证微服务,它是验证用户的 zuul 网关。我有另外两个服务在不同的端口上运行。如果我通过 zuul 网关调用,我可以在 jwt 的帮助下保护这两个服务,但是由于我知道两个微服务端口和 url,我可以直接调用并获取响应,而无需通过网关 url。所以我如何保护这两个微服务。请帮我分享两个微服务之间的安全上下文。

【问题讨论】:

你能分享你的代码吗 【参考方案1】:

我认为您正在寻找非 zuul 或 eureka 的微服务之间的安全设置。

在 WebSecurityConfigurerAdapter 的帮助下,您可以覆盖 CORS 设置并仅接受来自某个服务的请求,这样 zuul 就可以与服务对话,甚至可以与每个服务对话。但邮递员和其他客户无法做到这一点。

【讨论】:

所以这意味着我需要编写扩展 WebSecurityConfigurerAdapter 类的每个服务。如果我这样做,那么我无法从其他微服务的 zuul 网关服务进行调用。因为它会未经授权的错误 使用 JWT,您需要一种过滤机制来将令牌数据提取到 SecurityContextHolder 中。因此,您需要需要 WebSecurityConfigurerAdapter 才能激活的 JWTFilter。您可以将 JWT 逻辑外部化到一个单独的项目中,并通过 POM 在每个项目中导入它,以防止复制粘贴代码。使用 OAuth 或 OpenID,您不需要这样做,但使用 JWT,您需要自己提取它。虽然它只是每个服务可以复制的单个过滤器,但如果您问我,安全性也不会太麻烦。

以上是关于Spring Cloud Eureka Netflix zuul 过滤器的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud Zuul 添加 ZuulFilter

spring cloud 之eureka配置

spring cloud eureka ip或者域名怎么获取

Spring Cloud:服务治理——Spring Cloud Eureka

基于Spring Cloud的微服务构建学习-3 Spring Cloud Eureka配置详解

spring cloud 使用Eureka作为服务注册中心