问题标签 [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 投票
1 回答
688 浏览

nestjs - 将 Fusionauth 与 Express Gateway 集成

我想实现一个(小型)微服务基础架构,将应用程序业务逻辑(与域相关)与用户身份验证和 api 密钥管理的繁琐任务分开。

在我的场景中,我有一些属于某些组织的注册用户。注册用户可以读取他们组织的数据(当然还有角色等),他们也有一些自动化服务来读取和写入数据,为了简单起见,使用 api-key 身份验证。

预算很低(比如零),因为它现在是一个概念。所以没有像 AWS、Azure、Auth0 这样的付费服务。我还希望它可以在带有 Docker 的本地容器上运行。业务逻辑的首选语言是 TypeScript/JavaScript ( Nest.js ),尽管我想象一个与语言无关的场景。

所以我的想法是使用:

  • FusionAuth用于用户管理,因为它提供了一个简洁的 UI 和所有用于管理用户数据 (CIAM) 的东西,并支持许多身份验证策略(OAuth2、JWT、...),定义了用户、应用程序、角色等,但不处理每个应用程序的 api-keys或路由(它不是 api-gateway)。
  • Express Gateway用于 api-key 身份验证、路由和访问消费服务,但绕过其用户和应用程序管理系统,我觉得这里不需要
  • 用于业务逻辑服务的Nest.js(或其他 Web 框架),例如向/从主应用程序数据库插入和查询数据

我希望 FusionAuth 和 Express Gateway 一起工作,但我不清楚是否需要实现自定义 express-gateway-plugin(例如使用 jwt?)。

一切都将在处理 https 的反向代理(nginx)后面工作。

我想听听一些建议,例如这种情况是否正确,这些技术是否可以很好地协同工作,是否有人遇到过类似的情况,或者这种情况是否有更好的替代方案。

0 投票
0 回答
87 浏览

express-gateway - 如何使用 Oauth2.0 中的范围授权用户使用 Express Gateway(微服务 API 网关)?

我用 key-auth 机制做的范围是完美的,但是当我使用 Oauth2.0 机制的范围时,我得到了未经授权的错误。我没有使用范围,Oauth2.0 机制运行良好。请建议如何解决这个问题?

以下是网关 YAML 配置:

0 投票
2 回答
418 浏览

node.js - 解码并设置 Jwt 有效负载以请求参数

我们正在为我们的微服务使用 express-gateway。我们已经使用 Jwt 设置了身份验证。我们要验证 jwt 并解码 payload 并将其设置为 req params

这是我们的 gateway.config.yml 文件

我的 Jwt 有效负载令牌看起来像

解码并验证 jwt 签名后,网关应将有效负载信息设置为 req

这被传递给我们的底层微服务。这个怎么做。我应该在 gateway.config.yml 文件中设置更多参数吗?请指教。谢谢

0 投票
1 回答
150 浏览

express-gateway - Express-Gateway 中的 Oauth2 密码授予类型

我们正在尝试通过我们的微服务中的 Express-Gateway 实现“密码”授权类型。但是我们在 Express-Gateway 上找不到任何文档,并且当我们尝试通过邮递员访问它时,全局端点“/oauth2/token”会给出“未经授权”的错误。

任何参考文件或建议将不胜感激。

让我知道是否需要任何信息。

阿米特

0 投票
1 回答
210 浏览

express - 在 express-gateway 中运行自定义函数

我在 gateway.config.yml (Express-Gateway api)中有这个配置:

一切正常,但我希望客户端对正在发送的令牌进行编码/加密,以确保即使我在本地存储中有令牌存储,也没有人可以使用它,因为它需要由客户端签名。

唯一的问题是,如何在 Express-Gateway jwt 策略尝试验证令牌之前运行代码来解码/解密令牌?

因为 express-gateway 可以像任何其他 express 应用程序一样使用中间件,我认为这是可能的,但不知道如何去做。

我创建了这个对我有帮助的策略,但是如何将它与 express-gateway api 集成:

0 投票
1 回答
270 浏览

node.js - 了解 Express Gateway 和微服务(或单体 API)之间的用户创建

我正在学习和试验 Express Gateway 和一些简单的服务(甚至只是一个位于网关后面的小型单体 api)

我浏览了 Express Gateway 的“入门”示例并通读了文档。

现在,我正试图了解如何创建系统用户(客户/客户)......混乱在于“入门”教程让我在 Express Gateway 内创建用户的区域。

但是从单一的 RESTful API 角度来看……系统可能有自己的数据库模式来表示用户是什么。客户端应用程序调用 API 端点进行用户创建,通过自己的流程,制作记录,向客户端返回成功创建(或不成功)。然后让用户授权(JWT / OAuth / etc..)

那么使用 Express Gateway,我们是否需要创建一个用户,然后将该 ID 传递给 UserService 以保存在它自己的 dB 中,将这个新创建的id与 express gateway id链接起来?

0 投票
1 回答
204 浏览

azure - 如何将 Express Gateway 部署到 Azure

我能够在本地运行快速网关 Docker 容器和 Redis Docker 容器,并希望将其部署到 Azure。我该怎么做?

这是我的 docker-compose.yml 文件:

这是我的 system.config.yml 文件:

这是我的 gateway.config.yml 文件:

挂载 YAML 文件然后点击 /ip 端点是我卡住的地方。

0 投票
2 回答
240 浏览

logging - 在 express-gateway 中我想记录 consumerid,我得到示例 ${req.ip} 工作正常,但我如何引用例如 consumerId 等特定元素?

我如何引用 consumerId 以登录 express-gateway - 例如特定的“元素”是否记录在任何地方?

给我一个空响应

0 投票
1 回答
39 浏览

express-gateway - 在 express-gateway UI 中跳过 oauth 流中的请求范围

尝试使用 oAuth 授权流程。我在快速网关 UI 中获得了请求访问帐户的界面。在此处输入图像描述

我可以调整流程以跳过此界面并默认批准所有请求范围吗?

0 投票
1 回答
433 浏览

redis - Express-Gateway - 基本身份验证/Redis 性能问题

我们开始使用 express-gateway 作为简单的代理,并进行一些重写和 jwt 验证(jwt 来自 Auth0)。那里没问题。

对于某些端点,我需要基本身份验证,因此我需要设置持久性。

我们使用 Kubernetes 在同一个云提供商上运行我们的应用程序和托管数据库。

我注意到使用基本身份验证的端点的响应时间很长。我开始运行一些基本的基准测试。这是结果。

结果总结

  1. 直接调用我的应用
    • 284 个请求/秒
  2. Express Gateway - 仅代理
    • 285 个请求/秒
  3. Express Gateway - 代理 + 日志
    • 270 个请求/秒
  4. Express Gateway (Managed Redis) - 代理 + 日志 + 基本身份验证
    • 7 个请求/秒
  5. Express Gateway (Embedded Redis) - 代理 + 日志 + 基本认证
    • 7 个请求/秒

我首先认为我的托管 Redis 性能很差(它应该在具有 kubernetes 集群的同一个数据中心上),但嵌入式 Redis 具有相同的性能。

我不需要出色的表现,但我觉得 Basic Auth / Redis 实现存在问题。

这是预期的吗?我需要一个庞大的 Redis 数据库吗?我可以做些什么来解决这个问题?

结果详情

共享

HTTP 基准测试是用HEY完成的。

Express-Gateway docker 镜像:express-gateway:1.16.x

Express-Gateway gateway.config.yml(已编辑):

Express-Gateway 资源:

应用资源:

1.直接调用我的App

命令 :

结果 :

资源使用:

2. Express Gateway - 仅代理

命令 :

结果:

资源使用:

3. Express Gateway - 代理 + 日志

命令 :

结果:

资源使用:

4. Express Gateway (Managed Redis) - Proxy + Logs + Basic Auth

命令 :

结果:

资源使用:

5. Express Gateway (Embedded Redis) - Proxy + Logs + Basic Auth

命令 :

结果:

资源使用: