如何在API Gateway HTTP代理模式下让Cognito授权器传递已验证声明?
在HTTP代理模式下传递Cognito声明到后端的方法
因为HTTP代理模式无法使用请求体映射模板,你可以通过自定义请求头来传递Cognito验证后的声明,具体步骤如下:
- 登录AWS控制台,进入你的API Gateway资源,找到对应的HTTP代理类型集成请求
- 在「HTTP头」配置区域点击「添加头」:
- 输入自定义头名称,比如
X-User-Email(符合HTTP头命名规范即可,建议用X-前缀区分自定义头) - 在「映射来自」选择「上下文」,填入
$context.authorizer.claims.email(对应你要传递的声明字段)
- 输入自定义头名称,比如
- 保存配置并重新部署API
之后你的Express应用就能直接从请求头中获取这些值,示例代码:
const userEmail = req.headers['x-user-email'];
如果需要传递多个声明字段,重复添加对应的自定义头即可,比如X-User-Name对应$context.authorizer.claims.name、X-User-Sub对应$context.authorizer.claims.sub等。
这种方法完全适配HTTP代理模式,不需要修改代理核心逻辑,仅通过转发自定义头传递声明,是最简洁的实现方式。
内容的提问来源于stack exchange,提问作者Ahmet Yazıcı
相关产品推荐
相关产品推荐

