问题标签 [express-gateway]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
511 浏览

node.js - 如何使用快速网关将多个响应与单个网关端点结合起来

我正在尝试在网关处创建一个端点,该端点将调用多个服务调用并将它们组合成一个响应。快递网关可以吗?

这是我的 gateway.config.yml。

基本上,我想将所有声明的 serviceEndpoints 组合到一个路径。假设我触发 /ip ,它将调用 'api,uuid,agent' serviceEndpoints 并将它们全部组合成一个响应。那可能吗?

0 投票
1 回答
317 浏览

node.js - 有没有一种简单的方法可以从 express-gateway 服务生成 API 文档?

有没有一种简单的方法可以从 express-gateway 服务生成 API 文档?例如使用招摇?在传统方式中,文档是基于函数的注释生成的,在 express-gateway APIS 中定义在 gateway.config.yml 文件中,并且 swagger 不知道如何处理它。

0 投票
1 回答
783 浏览

express - 关于使用 Express-Gateway 进行 API 访问和使用 JWT 进行用户身份验证的建议

我在 Express 中有一个服务器,它向 Web 应用程序公开一些 API。我正在寻找一种管理最终用户和第 3 方身份验证的好方法。

现在,当用户使用电子邮件和密码注册时,服务器会生成与该用户关联的 JWT。

当 Web 客户端收到该令牌时,它会将令牌存储在 cookie/web_storage 中,并将其用于对服务器的每个 API 调用以及自动登录。令牌还包含role,因此当服务器收到请求时,它知道该用户/角色是否可以访问所请求的路由/资源。

现在一些第 3 方想要访问我的一些API。我想创建一个 Express-Gateway 来为想要使用我的服务器的应用程序制作 api-keys,并为单个用户保留现有的 JWT 身份验证。

所以我会有

  • 我的 Web-App 应该访问所有 API,因为我的 Web-App 被admins(像我一样)和我们的用户(customersshops)使用。
  • 3rd 方应用程序应仅访问某些 API,因为它们将仅是customersshops.

所以我想做这样的事情:

最后,我的 Web 应用程序将有一个包含所有范围的 ApiKey,而第 3 方 ApiKeys 将只有user范围,所以我可以过滤路由。单个真实用户,无论使用何种 App,都将使用 JWT 令牌登录并发出请求。

因此,每个请求都会有一个 ApiKey(基于所使用的应用程序)和一个 JWT 令牌(用于识别用户):

  • ApiKey 将由第 3 方服务器添加到标头中,
  • JWT 令牌将由用户浏览器的 web_storage (检索并)添加到标头中。

听起来不错?

0 投票
1 回答
985 浏览

api-key - Express-Gateway,提供相同的 API 路径/路由,但在不同的 ServiceEndpoints 下

我在 Node.js + Express 中有一个服务器,它向公众和管理员公开了一些 API。实际上我有 2 个正在运行的克隆实例,一个用于测试,一个用于生产。它们是双胞胎,公开相同的路由(/admin, /public),但连接到两个不同的数据库,并部署在两个不同的地址上。

我想使用 Express-Gateway 向 3d 方提供 API,所以我将首先让他们访问测试服务器。全部完成后,我还将为他们提供生产访问权限。

为此,我的想法是只创建 1eg user和多个eg application. 每个eg application人都eg credentials必须访问服务器或生产。

根据提供的凭据,网关应将请求重定向到server_test.comserver_prod.com。我的想法是用来eg scopes处理对正确端点的请求。因此,服务器测试策略将需要范围api_test,而服务器产品将需要api_prod范围。

无论如何,这个解决方案不起作用,因为如果第一个匹配apiEndpoints失败,它只会导致“未找到”。

示例:我请求使用带范围的http://gateway.com/publicApp Prod 凭据。api_prod它应该被传递给http://server_prod.com/public,但它匹配第一个paths: '/*'testEndpoint并且不符合范围条件。所以它只是失败了,而正确的 apiEndpoint 应该是prodEndpoint.

我怎么解决这个问题?

这是我的 gateway.config.yml

0 投票
1 回答
164 浏览

heroku - Heroku 上的 express-gateway - {$PORT} 绑定错误

我已经在 Heroku 上部署了我的 express-gateway,在gateway.config.yml文件中以这种方式使用 env 变量:

无论如何 Heroku 不断给出这个错误:

${ENV_VAR_NAME:-DEFAULT}根据官方文档使用了该符号。为什么 Heroku 尝试绑定 8080?

====== 更新

对于谁将使用 Heroku,这只是一个无关紧要的提示,这是我从 env vars获取redis url 的方法。

0 投票
1 回答
296 浏览

jwt-auth - Express Gateway - 远程身份验证服务器的 JWT 验证策略 checkCredentialExistence

我使用 express gateway 作为 API Gateway 中间件,设置如下。

  1. Express 网关仅用作网关。
  2. 我的身份验证(用户数据库)服务器位于不同的位置,我将所有登录请求路由到身份验证服务器以获取 jwt。
  3. 多个资源服务器位于快速网关后面。这不会授权或验证任何请求。所有传入的请求都被视为已通过身份验证

我已经设置了 EG 配置,以便它验证 JWT 并仅通过正确的 JWT 传递请求。因为网关本身的授权checkCredentialExistence

问题

当用户发送注销请求时,我从身份验证服务器撤消了访问和刷新令牌。但是,被撤销的JWT 令牌仍然是有效的令牌。网关继续通过已撤销的 jwt 传递传入的请求。

如果 JWT 在 Express 网关中仍然有效,有没有办法检查远程 api?

0 投票
0 回答
347 浏览

node.js - https 自签名证书上的 Express Gateway 错误,即使在 Node 中禁用了证书验证

我正在玩耍和学习Express Gateway。入门指南要求我调用 https 端点。我的组织通过一个中间箱运行所有请求,该中间箱嗅探 https 内容并将其根证书安装在我们的机器上。因此,基本上所有 https 有效负载都使用组织自己的证书进行签名。

基本上,当 Express Gateway 进行调用并看到它不信任的证书时,它会引发错误。我尝试设置NODE_TLS_REJECT_UNAUTHORIZED=0为暂时禁用证书验证,但我仍然看到错误并且连接被拒绝:

在此处输入图像描述

如何在 Express Gateway 中暂时禁用证书验证?

作为一个长期的解决方案,我看过一篇关于如何通过设置环境变量让Node 信任我的操作系统证书NODE_EXTRA_CA_CERTS的帖子,但我不知道在我的系统上指向哪个文件作为证书文件

更新 1 (2020.26.02)

我听从了维琴佐的建议,并尝试直接调用脚本而不是通过 annpm script但它不起作用。我在server.js文件顶部添加了一个控制台日志以查看NODE_TLS_REJECT_UNAUTHORIZED. 当我不设置变量时,我尝试代理到 https 服务,这就是我所看到的:

在此处输入图像描述

当我设置变量,再次直接执行脚本时,这就是我所看到的——网关仍然拒绝自签名证书:

在此处输入图像描述

0 投票
1 回答
516 浏览

express-gateway - Express Gateway:使用 Request-Transformer 策略添加参数,但在条件下

在我的 Node 系统中,我有一个服务器公开了一些 API,可以通过 Express Gateway 访问。req.body根据使用我的 API 的应用程序,我想强制在 中添加一些参数。

为此,我使用个性化scope价值。例如,我有 App1 和 App2(及其凭据)使用我的 API。因此,在例如凭据中,我将范围添加app1到 App1 凭据和app2App2 凭据的范围。

gateway.config.yml我写的文件中:

但我得到这个错误:

=============

实际看 JSON 转换actionrequest-transformer. 缩进不好。

0 投票
1 回答
94 浏览

express-gateway - Express-Gateway:egContext 下缺少范围 - apiEndpoint.scopes

我想根据凭证的范围强制在 req.body 中添加一个文件。我有 2 个应用程序(App1 和 App2),根据谁在使用我的 API,我想以编程方式在请求中添加一个字段。所以 App1 的凭证有范围app1,并且app2在 App2 的范围内。

此外,我有 2 个具有不同端点的环境。两个应用程序都可以访问两端(使用不同的凭据)。所以我首先选择Env(使用dev_envmy_env范围),然后我验证哪个App正在访问(检查app1app2范围)。

为此,我使用表达式apiEndpoint.scopes.indexOf('app1')>=0。这实际上是行不通的,因为条件总是false。因此,出于调试目的,我将apiEndpoint.scopes作为附加字段的内容放在 中req.body,以查看其中的内容。

而且我看到它apiEndpoint.scopes只是["my_env"],而不是“app1”。为什么?

所以我有

req.body 的内容是

'app1' 不见了!

==== 更新 1 如果req.body.available_scopes我在字段中输入“消费者”,我得到了这个:

所以它谈到“authorizedScopes”,其他人在哪里?我怎么能看到他们?谢谢

0 投票
1 回答
504 浏览

docker - docker-compose 和 express-gateway 在本地显示包网关

我想在我的电脑上本地运行我的 express-gateway 并有两个服务用于访问我的网关,问题是总是有同样的问题“坏网关”我用其他公共 api 测试并且工作正常,如何在本地运行它没有这个问题?因为总是显示“坏网关”:

我的 docker-compose.yml

这是我的快速网关上的配置。我的 gateway.config.yml :