微服务内部通信

Ank*_*yan 3 microservices

我正在向微服务架构师学习 API。这是有关设置的小描述

  • 我有两个微服务应用程序和 API 网关
  • 包括API网关在内的所有应用程序都是nodeJs - Express应用程序。
  • 身份验证逻辑 - JWT,在 API 网关上处理
  • 使用 http 代理将每个传入 API 网关请求传递到每个微服务应用程序。
  • 还将用户信息作为代理标头传递。

客户端请求流程:
客户端使用 JWT 令牌向微服务 1 请求 API1,该令牌将在 API 网关进行身份验证,然后从微服务 1 提供信息。这很好。
但我有一个私有 API2,客户端不应该允许它。只有内部应用程序可以使用它,但它应该可以根据客户端的另一个请求进行调用。

例如。

client request -> /API/Gateway1 (has JWT)
/API/Gateway1 -> API1 (has valid user)
API1 -> /API/Gateway2 (has valid user)
/API/Gateway2 -> API2 (has valid user)
Run Code Online (Sandbox Code Playgroud)

问题:
如何从客户端保护 API2,如果客户端伪造有效的用户标头怎么办?

小智 5

您想要做的是阻止 API2 接受外部流量,有多种方法可以做到这一点,例如:-

  1. 将与 API1 的可能 IP 地址对应的一组 IP 地址列入白名单
  2. 将所有 API 放入 VPN 中,仅将 API1 暴露给公共流量
  3. 创建一些内部身份验证策略,例如让 API1 使用某些密钥签署对 API2 的请求。