关于反向代理到 TLS 微服务的 Spring Gateway 问题

标签 spring ssl spring-cloud-gateway

我目前正在开发一个项目,其中每个微服务都有自己的 tls 证书。
我正在考虑使用spring gateway来解决像csrf这样的交叉问题(使用双重提交模式)。
我希望网关在代理到微服务之前验证 csrf,并在微服务的每个响应之后创建一个新的 csrf 值,并改变响应以包含新的 csrf 值。
由于每个微服务(网关代理到)都有自己的 tls 证书,是否可以在将请求发送到微服务之前和之后读取和改变请求?
如果网关没有读取请求的证书,我想我对网关的工作方式有点困惑。

最佳答案

网关将建立它自己的 tls 连接。之后,网关将应用它的过滤器,然后代理到建立另一个 tls 连接的微服务。在这个场景中,我们将有 2 个不同的 tls 连接(从客户端浏览器到网关,从网关到服务)。
在我的 senario 中,我有带有自签名证书的微服务。网关设置需要包含每个服务的公钥以建立 tls 连接(因为它无法验证来自证书颁发机构的证书)。 Spring 网关允许我们在应用程序属性文件中执行此操作

spring:
  cloud:
    gateway:
      httpclient:
        ssl:
          trustedX509Certificates:
          - cert1.pem
          - cert2.pem
最后,通过创建过滤器,我能够在代理到微服务之前验证网关内的 csrf 值。我已决定不更改每个请求的 csrf 值。对于我的用例,我只需要为用户的 session 生成一次 csrf(我在用户登录后生成了一次 csrf)。

关于关于反向代理到 TLS 微服务的 Spring Gateway 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67793411/

相关文章:

spring-boot - 使用 SSL 的 Spring Cloud Gateway 无法按名称路由到服务

java - 使用 context.xml 更改 jdbc.properties

java - 如何在PreparedStatement中使用自动生成的@Id?

java - spring hibernate maven 项目出现 nosuchmethod 错误 InjectionMetadata

apache - Wampserver:安装 openssl 后橙色状态

spring - 使用 Spring Cloud Gateway 进行全局异常处理

java - STS 启动仪表板不显示起始端口

node.js - 安装错误 - libcurl 不支持或禁用协议(protocol) "https"

c# - 自托管 C# SSL Web 服务器,无需管理员权限