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

AWS Cognito与Entra ID SAML集成:列表属性映射问题咨询

问题分析与解决方案

首先明确:AWS Cognito的SAML属性映射不直接支持多值(列表类型)的SAML断言属性,默认情况下会只提取列表中的第一个元素,这就是你生成的JWT里仅显示一个组的原因。不过有两种可行的方案来解决这个问题:

方案1:在Entra ID侧拼接多值属性为单字符串

你可以在Entra ID的应用属性映射配置中,将多值的组属性用分隔符(比如逗号、分号)拼接成单个字符串,再映射到Cognito的用户属性(比如custom:groups)。

  • 操作步骤:在Entra ID的应用配置里找到SAML属性映射,针对多值的组属性,使用字符串拼接规则把所有组值合并成一个带分隔符的字符串。
  • 后续处理:应用端拿到JWT中的该属性后,只需按分隔符拆分就能得到完整的组列表。

方案2:用Cognito Post Authentication Lambda触发器处理多值属性

如果无法修改Entra ID的断言输出,可以通过Lambda触发器在认证流程中提取并处理多值属性:

  • 创建Post Authentication类型的Lambda函数,在函数中从event.request.samlAssertionAttributes中获取原始的多值属性(Cognito会将其保留为数组格式)。
  • 若要替换Cognito用户组,可将数组赋值给response.claimsOverrideDetails.groupOverrideDetails.groupsToOverride;若要添加为自定义JWT声明,就把数组放到response.claimsOverrideDetails.claimsToAddOrOverride中(比如"custom:groups": ["group1", "group2"])。
  • 在Cognito用户池的触发器设置中,关联这个Lambda函数到Post Authentication触发点。

注意事项

  • 使用Lambda方案时,要确保Lambda拥有对应的权限(比如cognito-idp:AdminUpdateUserAttributes,如果需要更新用户属性)。
  • JWT的总大小有限制(建议不超过10KB),如果组数量过多,优先考虑方案1的字符串拼接方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 04:48:21