AWS API Gateway Cognito授权器无法识别有效Token求助
解决思路
- 核对CDK中Cognito授权器的核心配置
- 确认
CognitoUserPoolAuthorizer是否正确关联目标用户池,以及identitySource是否设置为请求中携带Token的Header(默认是method.request.header.Authorization,要和你实际传Token的Header字段一致)。 - 检查授权器是否指定了正确的Token类型:如果用
id_token,需确保授权器未强制要求access_token的特定Scope;如果用access_token,要确认授权器配置中关联了对应的用户池资源服务器或客户端ID。
- 确认
- 验证Token本身的合法性
- 用
jwt.io解析Token,核对以下字段:iss:必须与你的Cognito用户池域名完全一致(格式如https://cognito-idp.<区域>.amazonaws.com/<用户池ID>)aud:若用id_token,需匹配你的Cognito用户池客户端ID;若用access_token,需匹配授权器配置中指定的受众(客户端ID或资源服务器标识符)exp:确认Token未过期
- 用
- 检查API Gateway的授权绑定
- 确认API Gateway的部署阶段已关联该Cognito授权器,且每个需要授权的API方法都明确设置了
authorizer属性(CDK中需在addMethod时指定authorizer参数)。
- 确认API Gateway的部署阶段已关联该Cognito授权器,且每个需要授权的API方法都明确设置了
- 排查IAM权限问题
- 确认API Gateway的执行角色拥有
cognito-idp:VerifyToken权限,CDK创建授权器时通常会自动生成该权限,但如果自定义了权限边界或策略,需检查是否存在限制。
- 确认API Gateway的执行角色拥有
- 查看CloudWatch日志定位具体错误
- 开启API Gateway的执行日志,查看授权阶段的详细错误信息(如签名不匹配、受众不匹配、Token无效等),这是定位问题最直接的方式。
- 确认Token的获取与携带方式
- 若使用
access_token,需确保获取Token时请求了API Gateway授权器要求的Scope;携带Token时,必须严格遵循Bearer <Token>格式(注意Bearer后有空格)。
- 若使用
内容的提问来源于stack exchange,提问作者Duba
相关产品推荐
相关产品推荐

