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

接入Google作为OIDC身份提供商到AWS Cognito后登录遇`attributes required: [email]`错误

问题分析与解决方案

是的,这个attributes required: [email]错误的核心原因就是AWS Cognito在创建用户时,未能从Google OIDC提供商处获取到email属性,或者无法将其正确映射到用户池的必填email字段。以下是具体的排查和解决步骤:

1. 确认Google OAuth作用域与权限配置

  • 确保Google Cloud Console中,你的OAuth客户端已正确配置email相关权限:
    • 在OAuth consent screen的Scopes for Google APIs中,添加email(或完整路径https://www.googleapis.com/auth/userinfo.email),并确保该权限处于启用状态。
    • 检查Google端的作用域是否与Cognito配置匹配:Cognito请求的openid email phone profile作用域,需要Google端完全支持并返回对应属性。

2. 验证Google ID Token是否包含email声明

Cognito默认优先从ID Token而非UserInfo接口获取用户属性,即便你调用userinfo能拿到email,如果ID Token里没有该字段,Cognito依然会报错:

  • 解码登录流程中Google返回的ID Token(可使用本地JWT解码工具,比如终端执行jwt decode <token>命令),检查payload中是否存在email字段。
  • 如果ID Token不含email,需确认Google是否因为作用域未正确传递而未返回该声明,重新检查Cognito身份提供商的作用域配置,确保email被包含在请求的scope中。

3. 检查Cognito属性映射与用户池配置

  • 确认Cognito身份提供商的属性映射是直接关联ID Token的email声明到用户池的email属性,避免使用自定义表达式或错误的字段映射。
  • 检查用户池的email属性设置:如果该属性被设为必填,必须确保Cognito能稳定获取到该值;若暂时无法定位问题,可临时将其设为非必填,登录后查看用户属性是否已填充,以此验证是否真的未获取到email。

4. 确认Cognito的作用域是否正确传递给Google

  • 抓包查看Cognito向Google发起的授权请求,检查scope参数是否包含email。如果未包含,需重新配置Cognito身份提供商的作用域,确保openid email phone profile被完整传递。

内容的提问来源于stack exchange,提问作者Marek Takac

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 15:32:46