首页 > 解决方案 > 在 HTTP API 网关中使用授权方时将 JWT 令牌替换为另一个 JWT 令牌

问题描述

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

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

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

但是,我想在 JWT Authorizer 和客户端端点之间插入一个 Lambda,它将面向客户端的令牌交换为 IdP 令牌(执行API service正在执行的操作)。这可能吗?我该如何处理?

标签: jwtjwt-authamazon-api-gatewaylambda-authorizer

解决方案


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

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

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


推荐阅读