问题标签 [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.
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)后面工作。
我想听听一些建议,例如这种情况是否正确,这些技术是否可以很好地协同工作,是否有人遇到过类似的情况,或者这种情况是否有更好的替代方案。
express-gateway - 如何使用 Oauth2.0 中的范围授权用户使用 Express Gateway(微服务 API 网关)?
我用 key-auth 机制做的范围是完美的,但是当我使用 Oauth2.0 机制的范围时,我得到了未经授权的错误。我没有使用范围,Oauth2.0 机制运行良好。请建议如何解决这个问题?
以下是网关 YAML 配置:
node.js - 解码并设置 Jwt 有效负载以请求参数
我们正在为我们的微服务使用 express-gateway。我们已经使用 Jwt 设置了身份验证。我们要验证 jwt 并解码 payload 并将其设置为 req params
这是我们的 gateway.config.yml 文件
我的 Jwt 有效负载令牌看起来像
解码并验证 jwt 签名后,网关应将有效负载信息设置为 req
这被传递给我们的底层微服务。这个怎么做。我应该在 gateway.config.yml 文件中设置更多参数吗?请指教。谢谢
express-gateway - Express-Gateway 中的 Oauth2 密码授予类型
我们正在尝试通过我们的微服务中的 Express-Gateway 实现“密码”授权类型。但是我们在 Express-Gateway 上找不到任何文档,并且当我们尝试通过邮递员访问它时,全局端点“/oauth2/token”会给出“未经授权”的错误。
任何参考文件或建议将不胜感激。
让我知道是否需要任何信息。
阿米特
express - 在 express-gateway 中运行自定义函数
我在 gateway.config.yml (Express-Gateway api)中有这个配置:
一切正常,但我希望客户端对正在发送的令牌进行编码/加密,以确保即使我在本地存储中有令牌存储,也没有人可以使用它,因为它需要由客户端签名。
唯一的问题是,如何在 Express-Gateway jwt 策略尝试验证令牌之前运行代码来解码/解密令牌?
因为 express-gateway 可以像任何其他 express 应用程序一样使用中间件,我认为这是可能的,但不知道如何去做。
我创建了这个对我有帮助的策略,但是如何将它与 express-gateway api 集成:
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链接起来?
azure - 如何将 Express Gateway 部署到 Azure
我能够在本地运行快速网关 Docker 容器和 Redis Docker 容器,并希望将其部署到 Azure。我该怎么做?
这是我的 docker-compose.yml 文件:
这是我的 system.config.yml 文件:
这是我的 gateway.config.yml 文件:
挂载 YAML 文件然后点击 /ip 端点是我卡住的地方。
logging - 在 express-gateway 中我想记录 consumerid,我得到示例 ${req.ip} 工作正常,但我如何引用例如 consumerId 等特定元素?
我如何引用 consumerId 以登录 express-gateway - 例如特定的“元素”是否记录在任何地方?
给我一个空响应
redis - Express-Gateway - 基本身份验证/Redis 性能问题
我们开始使用 express-gateway 作为简单的代理,并进行一些重写和 jwt 验证(jwt 来自 Auth0)。那里没问题。
对于某些端点,我需要基本身份验证,因此我需要设置持久性。
我们使用 Kubernetes 在同一个云提供商上运行我们的应用程序和托管数据库。
我注意到使用基本身份验证的端点的响应时间很长。我开始运行一些基本的基准测试。这是结果。
结果总结
- 直接调用我的应用
- 284 个请求/秒
- Express Gateway - 仅代理
- 285 个请求/秒
- Express Gateway - 代理 + 日志
- 270 个请求/秒
- Express Gateway (Managed Redis) - 代理 + 日志 + 基本身份验证
- 7 个请求/秒
- 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
命令 :
结果:
资源使用: