You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在API Gateway V2配置Cognito授权器并开放池内所有客户端访问?

在API Gateway V2中实现Cognito用户池全客户端开放访问的方案

方案1:用Lambda授权器替代JWT授权器

这是最灵活的实现方式,能完全复刻V1中Cognito授权器的开放逻辑:

  • 编写一个Lambda函数,负责验证请求头里的Cognito访问令牌:
    1. 从Authorization头提取令牌,通过Cognito的VerifyTokenAPI(或本地JWT库)验证签名有效性
    2. 检查令牌的iss字段是否匹配目标用户池的颁发者URL,确保令牌来自指定用户池
    3. 跳过client_id的校验,只要令牌有效且属于目标用户池,就返回允许访问的IAM政策
  • 在API Gateway V2中创建Lambda授权器,关联该函数,设置令牌来源为Authorization头
  • 这种方式不受V2 JWT授权器的Audience限制,用户池内所有客户端生成的访问令牌都能通过验证

方案2:JWT授权器的变通方案(适合客户端数量少的场景)

如果不想切换到Lambda授权器,可以用以下方式绕过单客户端限制:

  • 在JWT授权器的Audience字段中,填入用户池内所有客户端的client_id(多个值用逗号分隔)
  • API Gateway V2会验证令牌的client_id是否在Audience列表中,只要是列表内的客户端生成的令牌,都能通过校验
  • 缺点是后续新增客户端时,需要手动更新授权器的Audience列表,维护成本会随客户端数量增加而上升

额外说明

  • Cognito访问令牌本身没有aud字段,API Gateway V2的JWT授权器会默认强制校验client_id与Audience的匹配关系,这是V2和V1的核心差异点
  • 如果业务场景允许使用Cognito ID令牌,ID令牌包含aud字段(值为对应客户端的client_id),但ID令牌侧重身份认证,而非API授权访问,需根据实际需求判断是否适用

内容的提问来源于stack exchange,提问作者Ranieri Mazili

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 13:01:19