我目前正在做一个项目,每个微服务都有自己的tls证书。
我正在考虑使用spring gateway来解决像csrf (使用双重提交模式)这样的交叉关注点。
我希望网关在代理到微服务之前验证csrf,并在每次微服务响应之后创建一个新的CSRF值,并更改响应以包括新的CSRF值。
由于每个微服务(网关代理)都有自己的tls证书,所以在将请求发送到微服务之前和之后是否可以读取和更改请求?
我想我有点困惑,如果网关没有读取请求的证书,它将如何工作。
发布于 2021-08-05 15:01:13
网关将建立它自己的tls连接。在此之后,网关将应用它的过滤器,然后代理到一个微服务,建立另一个tls连接。在这个场景中,我们将有两个不同的tls连接(从客户端浏览器到网关,从网关到服务)。
在我的senario中,我使用的是带有自签名证书的微服务。网关设置将需要包括用于建立tls连接的每个服务的公钥(因为它将无法验证来自证书颁发机构的证书)。Spring gateway允许我们在应用程序属性文件中执行此操作
spring:
cloud:
gateway:
httpclient:
ssl:
trustedX509Certificates:
- cert1.pem
- cert2.pem最后,我能够在代理到微服务之前验证网关中的CSRF值,方法是创建一个过滤器来执行此操作。我已经决定不更改每个请求的CSRF值。对于我的用例,我只需要为用户的会话生成一次csrf (我在用户登录后生成了一次csrf )。
https://stackoverflow.com/questions/67793411
复制相似问题