当前位置: 首页 > 知识库问答 >
问题:

微服务内部通信

翟卓君
2023-03-14

我正在使用microservies Architect学习API。下面是关于设置的小描述

  • 我有两个微服务应用程序和API网关
  • 包括API网关在内的所有应用程序都是NodeJS-Express app。
  • Auth Logic-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,如果客户端伪造了有效的用户头怎么办。

共有1个答案

李谦
2023-03-14

您要做的是防止API2接受外部通信量,有许多方法可以做到这一点,例如:-

  1. 白名单一组IP地址,这些地址与API1
  2. 的可能IP地址相对应
  3. 将所有API放在一个VPN中,并且只将API1公开给公共通信
  4. 创建一些内部auth策略,例如让API1用某个密钥向API2签名请求。
 类似资料:
  • 在微服务体系结构中,有一种称为API网关的常见模式。 我知道所有来自API网关外部的通信都被用作单个入口点。 但是我也希望从微服务到微服务的内部通信是通过API网关进行的?我的意思是,这比建立点对点连接要容易得多。 那么,是什么反对将API网关也用于整个内部通信呢?

  • 我有多个微服务。客户端可以通过API网关调用这些微服务,微服务之间也可以相互通信。 理想情况下,请求将来自拥有所有权限的用户的API网关。例如,如果用户(浏览器)需要来自微服务A的数据,则只将该角色授予用户,如果内部微服务A需要来自B的数据(rest call),则不应将该角色分配给用户。 要求:如何限制/授权微服务之间的内部通信,以便只有经授权的微服务才能呼叫其他服务。 选项: > 将所有角色分

  • 我有两个不同的微服务,将尤里卡作为服务注册表,现在我正在尝试从另一个微服务调用微服务,解析带有功能区的endpoint以进行客户端负载平衡。 服务A: 此服务公开一个终结点,并且应用程序.yml 如下所示: 调用服务A的服务B具有以下应用程序类: 控制器 服务 但我在尝试访问服务时遇到了一个异常: 对此有什么建议吗?

  • 我实际上在研究微服务,我面临一个问题。 上下文 我正在开发两个微服务: 用户管理,基于spring,使用MySQL数据库 计划管理,基于ASP.NET与SQL Server数据库。此服务的唯一访问点是列出一些RESTFULendpoint的API,如 计费管理,基于MongoDB的node.js。 问题 > 我该怎么做才能只允许通过用户服务访问规划信息,而不耦合这两个服务?知道以后可以从其他地方访

  • “在微服务之间添加的同步依赖关系越多,例如查询请求,客户端应用程序的总体响应时间就越差。 “这是真的吗?我认为在同步通信中,我们比异步通信更直接地得到反馈。例如,假设一个用户向微服务a发送http请求,微服务a又异步地向另一个微服务B发送请求,并异步地等待它的答复。如果微服务B关闭,那么用户将等待到超时才能得到响应,而在同步通信中,他将立即得到响应。