如何管理消费者的凭据

How to manage the credentials of the consumers

我有一个关于许多微服务和 Express-Gateway 的用户身份验证方式的一般性问题。 我有 N 个微服务。其中一个微服务(我们称之为 "User Profiles")将包含所有与用户配置文件相关的数据,例如电子邮件、用户名、注册日期、出生日期等。因此,这里有问题:

  1. 如何组织用户注册和认证?这个工作流程怎么样:
    • EG 有 API 个直接暴露于外部世界的端点。这些端点来自此 "User Profiles" 微服务。
    • 如果用户想要注册或登录,he/she 向该服务发送 POST 请求。此请求包含所有需要的数据。
    • 为了获得 JWT accessToken 然后用于所有其他请求,此微服务向 EG 的管理员 API 发送请求并创建以下内容:
      1. 创建用户
      2. 为此用户创建 jwt 凭据
    • 收到来自 EG 的响应后,"User Profiles" 微服务根据 keyId 和 keySecret
    • 形成 JWT 访问令牌
    • 将此令牌发回给用户
    • 用户现在可以通过 Bearer accessToken 访问所有受保护的路由

Here是流程图。

  1. 我的第二个问题是——如果上面的流程没问题,那么每次创建用户后,都会有新创建的keySecret。我需要为 gateway.config.yml 中的 secretOrPublicKey 参数添加什么?也许在生成 JWT accessToken 时,我需要使用某种类型的私钥而不是凭证创建步骤中的 keySecret,然后将完全相同的密钥放入 gateway.config.yml?

很抱歉回答晚了。

您描述的流程看起来不错,这正是管理员 API 的用途。

关于问题 2 — 您无需触摸 secretOrPublicKey — 您设置一次并且永远有效,无论您创建的用户数量如何。该参数用于对发送到客户端的 JWT 进行签名。保持原样,你应该没有任何问题。