在 HTTP API 网关中使用授权方时用另一个 JWT 令牌替换 JWT 令牌

Replacing JWT token by another JWT token while using an authorizer in HTTP API Gateway

在我的项目中,我目前有一个以这种方式工作的遗留身份验证:

  1. 有一个客户端(独立)与 API service 通信,后者是容器中的自定义应用程序 运行。
  2. 使用支持 OAuth 和 PKCE 的云身份提供程序 (IdP)。当用户进入登录页面然后被重定向到回调时,它通过通常的登录过程提供其令牌。
  3. API service 充当回调的接收者。因此,它获取身份提供者 token-1 并将其存储在缓存中。基于此,它 returns 向客户端修改 token-2token-1 “计算”但不同。
  4. 一旦客户端需要进行 REST 调用,它就会用 token-2 JWT 令牌对其进行修饰。调用转到 API 服务,将其与 token-1 匹配,然后可以针对 IdP 进行验证。

我需要用云原生机制摆脱 API service。我假设 AWS HTTP API 网关可以直接使用其 JWT Authorizer capability 与 IdP 集成。遗憾的是,我无法影响必须保持功能的当前遗留流程。

但是,我想在 JWT 授权方和客户端端点之间插入一个 Lambda,它会将面向客户端的令牌交换为 IdP 令牌(做 API service 正在做的事情)。这可能吗?我该如何处理?

听起来您需要创建一个 Lambda 授权器(正式名称为自定义授权器)而不是使用默认的 JWT 授权器。

https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html

您可以在此编写自己的逻辑,包括验证令牌和执行您提到的其他步骤。