使用Entra Id作为IdP的Cognito联合登录:加密用户名未解密疑问
Amazon Cognito 联合登录(Microsoft Entra ID 作为 IdP)的用户名解密问题
核心结论
Amazon Cognito 不会自动解密SAML响应中的加密属性(包括用户名)。当你在Microsoft Entra ID中启用SAML断言加密后,必须手动配置Cognito完成解密流程,否则Cognito会直接将加密后的内容作为用户名存储。
详细说明
- Microsoft Entra ID启用加密要求时,会对SAML断言中的敏感属性(如用户名)进行加密,这是符合SAML 2.0规范的行为,但Cognito默认不具备自动解密这类加密属性的能力。
- 要让Cognito正确解析加密后的用户名,需完成以下配置:
- 从Microsoft Entra ID导出加密断言所用公钥对应的私钥,确保该私钥可被Cognito访问(建议存储在AWS KMS中以保证安全性)。
- 在Cognito用户池的身份提供商设置中,上传该私钥并配置解密规则,明确指定需要解密的属性(比如
NameID字段或自定义的用户名属性)。 - 为Cognito关联的IAM角色配置权限,使其能够访问存储私钥的服务(如KMS的解密权限)。
排查验证建议
- 检查Microsoft Entra ID的SAML配置,确认加密范围是否覆盖了用户名对应的属性字段。
- 查看Cognito身份提供商的日志,若存在解密失败的错误条目,可根据提示调整私钥配置或权限设置。
- 先测试未启用加密的SAML响应,确认用户名能正常同步,排除其他联合登录流程的配置问题。
内容的提问来源于stack exchange,提问作者prike
相关产品推荐
相关产品推荐

