排查 SAML 与 IAM 联合身份验证的问题
使用此处的信息可帮助您诊断和修复在将 SAML 2.0 与 Amazon Identity and Access Management 联合使用时可能遇到的问题。
主题
- 错误:您的请求包含无效的 SAML 响应。要注销,请单击此处。
- 错误:AuthnResponse 中需要 RoleSessionName(服务:AWSSecurityTokenService;状态代码:400;错误代码:InvalidIdentityToken)
- 错误:未授权执行 sts:AssumeRoleWithSAML(服务:AWSSecurityTokenService;状态代码:403;错误代码:AccessDenied)
- 错误:AuthnResponse 中的 RoleSessionName 必须匹配 [a-zA-Z_0-9+=,.@-]{2,64}(服务:AWSSecurityTokenService;状态代码:400;错误代码:InvalidIdentityToken)
- 错误:源身份必须匹配 [a-zA-Z_0-9+=,.@-]{2,64} 且不能以 "aws:" 开始(服务:AWSSecurityTokenService;状态代码:400;错误代码:InvalidIdentityToken)
- 错误:响应签名无效(服务:AWSSecurityTokenService;状态代码:400;错误代码:InvalidIdentityToken)
- 错误:无法担任角色:指定提供商中没有发布者(服务:AWSOpenIdDiscoveryService;状态代码:400;错误代码:AuthSamlInvalidSamlResponseException)
- 错误:无法解析元数据。
- 错误:指定的提供商不存在。
- 错误:请求的 DurationSeconds 超过为该角色设置的 MaxSessionDuration。
- 错误:响应不包含所需受众。
错误:您的请求包含无效的 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 响应中没有包含 Subject
的 NameID
,也会出现此错误。
有关更多信息,请参阅在 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 格式编码。要删除 BOM,您可以使用 Notepad++ 等文本编辑工具以 UTF-8 格式对文件进行编码。
作为 SAML 元数据文档的一部分,X.509 证书必须使用长度至少为 1024 位的密钥。此外,x.509 证书也不能有任何重复的扩展名。您可以使用扩展程序,但扩展程序只能在证书中显示一次。如果 x.509 证书不符合任一条件,则 IdP 将创建失败,并返回 "Unable to parse metadata" 这一错误消息。
如 SAML V2.0 元数据互操作性配置文件 1.0 版
错误:指定的提供商不存在。
如果 SAML 断言中的提供商名称与 IAM 中的提供商名称不匹配,则可能会出现该错误。有关查看提供商名称的更多信息,请参阅在 IAM 中创建 SAML 身份提供者。
错误:请求的 DurationSeconds 超过为该角色设置的 MaxSessionDuration。
如果从 Amazon CLI 或 API 中担任角色,则可能会出现该错误。
在使用 assume-role-with-saml CLI 或 AssumeRoleWithSAML API 操作担任角色时,您可以为 DurationSeconds
参数指定一个值。您可以指定 900 秒 (15 分钟) 到角色的最大会话持续时间设置之间的值。如果指定的值高于该设置,操作将失败。例如,如果您指定的会话持续时间为 12 小时,但管理员设置的最大会话持续时间为 6 小时,您的操作将失败。要了解如何查看您的角色的最大值,请参阅更新角色的最长会话持续时间。
错误:响应不包含所需受众。
如果受众 URL 与 SAML 配置中的身份提供者不匹配,则可能会出现此错误。确保您的身份提供者(IdP)依赖方标识符与 SAML 配置中提供的受众 URL(实体 ID)完全匹配。