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

AWS Cognito对接ADFS OpenID Connect IDP时email属性缺失的解决

AWS Cognito与ADFS OIDC对接:解决email属性缺失问题

一、关键配置:属性映射

问题核心是Cognito未正确从ADFS的OIDC断言中提取并映射email属性,按以下步骤修正:

  • 登录AWS控制台,进入目标Cognito用户池,选择身份提供商 -> 已配置的ADFS OIDC提供商
  • 找到属性映射模块:
    • 在「用户池属性」列选中标准属性email
    • 在「IDP属性」列填写ADFS返回JWT中对应的email字段名——ADFS常用的字段名是email或http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress,需以实际返回的JWT内容为准
    • 若应用要求email为必填项,勾选「将此属性标记为必填」
  • 保存配置后重新测试登录流程

二、是否需要自定义属性映射?

仅当ADFS返回的email字段无法匹配Cognito标准email属性时才需要:

  1. 先在Cognito用户池的属性 -> 自定义属性中添加自定义属性(例如custom:adfs_email)
  2. 在身份提供商的属性映射中,将ADFS的非标准email字段映射到该自定义属性
  3. 若应用依赖标准email字段,可通过Cognito的预注册触发器或自定义消息触发器将自定义属性值同步到标准email属性中

三、调试手段

  1. 解码ADFS返回的JWT:
    • 用浏览器开发者工具捕获登录流程中授权码交换后的id_token,使用本地JWT解码工具查看内容,确认ADFS是否返回了email字段及字段名称
  2. 检查Cognito用户属性:
    • 在Cognito用户池的用户列表中找到测试用户,查看其属性是否包含email;也可通过AWS CLI命令:
      aws cognito-idp admin-get-user --user-pool-id <你的用户池ID> --username <用户唯一ID>
      
      查询完整用户属性
  3. 启用Cognito日志排查:
    • 进入Cognito用户池的监控 -> 日志,开启CloudWatch日志并设置日志级别为INFO或DEBUG
    • 登录后在CloudWatch日志中搜索AttributeMapping相关条目,确认Cognito是否正确处理了ADFS返回的属性

注意:如果ADFS本身未返回email属性,需先在ADFS端配置,确保OIDC断言中包含email声明(可能需要修改依赖方信任的声明规则)

内容的提问来源于stack exchange,提问作者Daniel Pomrehn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:57:29