SAML 2.0 与 Amazon 联合的问题排查 - Amazon Identity and Access Management
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

SAML 2.0 与 Amazon 联合的问题排查

使用此处的信息可帮助您诊断和修复在将 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 服务提供商配置中更正角色的名称。

只有当角色信任策略包含 sts:AssumeRoleWithSAML 操作时,才允许您访问。如果您的 SAML 断言配置为使用 PrincipalTag 属性,则信任策略还必须包含 sts:TagSession 操作。有关会话标签的更多信息,请参阅在 Amazon STS 中传递会话标签

如果角色信任策略中没有 sts:SetSourceIdentity 权限,则可能发生此错误。如果您的 SAML 断言配置为使用 SourceIdentity 属性,则信任策略还必须包含 sts:SetSourceIdentity 操作。更多有关源身份的信息,请参阅 监控和控制使用所担任角色执行的操作

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

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

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

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

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

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

错误:源身份必须匹配 [a-zA-Z_0-9+=,.@-]{2,64} 且不能以 "aws:" 开始(服务:AWSSecurityTokenService;状态代码:400;错误代码:InvalidIdentityToken)

如果 sourceIdentity 属性值太长或者包含无效字符,则会出现此错误。最大有效长度为 64 个字符。更多有关源身份的信息,请参阅 监控和控制使用所担任角色执行的操作

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

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

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

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

如果 SAML 响应中的颁发者与联合元数据文件中声明的颁发者不匹配,则可能会出现该错误。在 IAM 中创建身份提供商时,元数据文件将上传到 Amazon 中。

错误:无法解析元数据。

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

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

错误:指定的提供商不存在。

如果您在 SAML 断言中指定的提供商名称与在 IAM 中配置的提供商名称不匹配,则可能会出现该错误。有关查看提供商名称的更多信息,请参阅创建 IAM SAML 身份提供商

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

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

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