微服务内部通信

时间:2017-11-16 13:26:21

标签: microservices

我正在与微生物架构师学习API。这是关于设置的小描述

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

客户请求流程
客户端使用带有JWT令牌的microservice1请求API1,该令牌将在API网关上进行身份验证,然后将从microservice1提供信息。这很好。
但我有一个私人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)

问题:
如何保护API2免受客户端的影响,如果客户端伪造有效的用户头,该怎么办。

2 个答案:

答案 0 :(得分:3)

您要做的是阻止API2接受外部流量,例如,您可以通过多种方式执行此操作: -

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

答案 1 :(得分:0)

看起来你根本就不需要在API2上使用REST端点。
上述@Dayo Adeyemi的建议是正确的,但如果有一项服务需要保密,那么就不需要在那里编写REST端点代码了。