AWS Identity and Access Management
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

SAML 2.0 与 AWS 联合的问题排查

使用此处的信息可帮助您诊断和修复在将 SAML 2.0 与 IAM 联合使用时可能遇到的问题。

错误:您的请求包含无效的 SAML 响应。要注销,请单击此处。

当来自身份提供商的 SAML 响应没有包含将 Name 设置为 https://aws.amazon.com/SAML/Attributes/Role 的属性时,会出现此错误。属性必须包含一个或多个 AttributeValue 元素,每个元素中包含以逗号分隔的一对字符串:

  • 用户可以映射到的角色的 ARN

  • SAML 提供商的 ARN

有关更多信息,请参阅 为身份验证响应配置 SAML 断言。要在浏览器中查看 SAML 响应,请按照如何在浏览器中查看 SAML 响应以排查问题中列出的步骤操作。

错误:AuthnResponse 中需要 RoleSessionName (服务:AWSSecurityTokenService;状态代码:400;错误代码:InvalidIdentityToken)

当来自身份提供商的 SAML 响应没有包含将 Name 设置为 https://aws.amazon.com/SAML/Attributes/RoleSessionName 的属性时,会出现此错误。属性值是用户的标识符,通常是用户 ID 或电子邮件地址。

有关更多信息,请参阅 为身份验证响应配置 SAML 断言。要在浏览器中查看 SAML 响应,请按照如何在浏览器中查看 SAML 响应以排查问题中列出的步骤操作。

错误:未授权执行 sts:AssumeRoleWithSAML (服务:AWSSecurityTokenService;状态代码:403;错误代码:AccessDenied)

当在 SAML 响应中指定的 IAM 角色有拼写错误或者不存在时,会出现此错误。在 SAML 服务提供商配置中更正角色的名称。

如果联合身份用户没有担任该角色的权限,则会出现此错误。该角色必须具有将 IAM SAML 身份提供商的 ARN 指定为 Principal 的信任策略。角色还包含控制哪些用户可以担任该角色的条件。确保您的用户满足条件要求。

如果 SAML 响应中没有包含 NameIDSubject,也会出现此错误。

有关更多信息,请参阅在 AWS 中为联合身份用户建立权限为身份验证响应配置 SAML 断言。要在浏览器中查看 SAML 响应,请按照如何在浏览器中查看 SAML 响应以排查问题中列出的步骤操作。

错误:AuthnResponse 中的 RoleSessionName 必须匹配 [a-zA-Z_0-9+=,.@-]{2,64} (服务:AWSSecurityTokenService;状态代码:400;错误代码:InvalidIdentityToken)

如果 RoleSessionName 属性值太长或者包含无效字符,则会出现此错误。最大有效长度为 64 个字符。

有关更多信息,请参阅 为身份验证响应配置 SAML 断言。要在浏览器中查看 SAML 响应,请按照如何在浏览器中查看 SAML 响应以排查问题中列出的步骤操作。

错误:响应签名无效 (服务:AWSSecurityTokenService;状态代码:400;错误代码:InvalidIdentityToken)

在身份提供商的联合身份元数据与 IAM 身份提供商的元数据不匹配时,会出现此错误。例如,身份服务提供商的元数据文件可能已更改,以便更新过期的证书。从身份服务提供商下载更新后的 SAML 元数据文件。然后在 AWS 身份提供商实体中更新它,该实体在 IAM 中使用 aws iam update-saml-provider 跨平台 CLI 命令或 Update-IAMSAMLProvider PowerShell cmdlet 定义。

错误:无法担任角色:指定提供商中没有发布者 (服务:AWSOpenIdDiscoveryService;状态代码:400;错误代码:AuthSamlInvalidSamlResponseException)

如果 SAML 响应中的发布者与在 IAM 中创建身份提供方时上传到 AWS 的联合身份元数据文件中声明的发布者不匹配,则会出现此错误。

错误:无法解析元数据。

如果您的元数据文件没有正确格式化,则可能发生此错误。

在 AWS 管理控制台 中创建或管理 SAML 身份提供商时,您必须从您的身份提供商处检索 SAML 元数据文档。此元数据文件包括发布者名称、过期信息以及可用来验证从 IdP 处收到的 SAML 身份验证响应 (断言) 的密钥。元数据文件必须采用不含字节顺序标记 (BOM) 的 UTF-8 格式编码。此外,作为 SAML 元数据文档一部分,x.509 证书必须使用长度至少为 1024 位的密钥。如果密钥过短,则 IdP 将创建失败,并显示“无法解析元数据”这一错误消息。要删除 BOM,您可以使用 Notepad++ 等文本编辑工具以 UTF-8 格式对文件进行编码。

错误:请求的 DurationSeconds 超过为该角色设置的 MaxSessionDuration。

如果从 AWS CLI 或 API 中担任角色,则可能会出现该错误。

在使用 assume-role-with-saml CLI 或 AssumeRoleWithSAML API 操作担任角色时,您可以为 DurationSeconds 参数指定一个值。您可以指定 900 秒 (15 分钟) 到角色的最大会话持续时间设置之间的值。如果指定的值高于该设置,操作将失败。例如,如果您指定的会话持续时间为 12 小时,但管理员设置的最大会话持续时间为 6 小时,您的操作将失败。要了解如何查看您的角色的最大值,请参阅查看角色的最大会话持续时间设置