AWS API Gateway使用Access Token时出现401授权错误求助
排查AWS Cognito Access Token调用API 401未授权问题
1. 验证Access Token的受众(Audience)匹配性
- Cognito Access Token的
aud字段必须与API网关授权器配置的**受众(Audience)**完全一致:如果授权器中填写了Cognito用户池的Client ID,Access Token的aud必须等于该Client ID;若授权器未指定受众,aud需为用户池ID或Client ID(取决于Cognito设置)。 - 可通过本地JWT解码工具拆分Access Token,检查
aud值并与授权器配置对比。
2. 确认授权器的令牌类型配置
- 检查API网关授权器的“令牌验证”设置:若授权器仅配置为接受ID Token,使用Access Token必然无法通过验证。需确保授权器设置为支持Access Token,且正确填写用户池的OAuth2.0 issuer端点。
3. 核对Access Token的范围(Scopes)与API要求
- 若API资源配置了特定授权范围(如自定义的
myapi/read),Access Token的scope字段必须包含该范围。 - 获取Access Token时,需在请求的
scope参数中指定对应范围(如openid或自定义范围);若API未设置范围,授权器的“默认范围”需留空,且Access Token需包含基础范围。
4. 检查令牌的有效性与签名
- 查看Access Token的
exp字段,确认令牌未过期,过期则重新获取新令牌测试。 - 确认令牌由Cognito用户池的公钥签名,且API网关能正常访问用户池的
/.well-known/jwks.json端点获取公钥(若API网关部署在VPC内,需确保网络连通性)。
5. 确认Postman请求的授权头格式
- 需将Access Token放在
Authorization请求头中,格式为Bearer <你的Access Token>,注意Bearer后需加空格,大小写需正确。 - 排查是否存在其他自定义请求头干扰,确保仅保留必要的请求头内容。
6. 验证API网关的部署状态
- 修改授权器或API资源配置后,必须重新部署API至对应的测试阶段(如prod、dev),否则修改不会生效。再次确认部署的阶段与测试使用的阶段一致。
内容的提问来源于stack exchange,提问作者QuadraticEquation
相关产品推荐
相关产品推荐

