如何对 Okta 和 AWS IAM 联合身份验证的“SAML 响应无效”错误进行问题排查?

2 分钟阅读
0

当我使用 Okta 登录 AWS 时,我收到一个 SAML 无效错误,类似于: “您的请求包含无效的 SAML 响应。要注销,请单击此处”。 如何解决此错误?

简短描述

当您在 Okta 中使用 AWS 账户联合身份验证时,可能会在登录 AWS 时收到 SAML 无效错误。如果您在 SAML 响应中为角色属性提供的信息缺失或不正确,则可能会发生这种情况。此属性的预期值是 AWS Identity and Access Management (IAM) 角色和 SAML 提供商的一个或多个逗号分隔的对,如下所示:

<Attribute Name="https://aws.amazon.com/SAML/Attributes/Role">
  <AttributeValue>arn:aws:iam::ACCOUNT_NUMBER:role/ROLE_NAME_1,arn:aws:iam::ACCOUNT_NUMBER:saml-provider/PROVIDER_NAME/AttributeValue>
  <AttributeValue>arn:aws:iam::ACCOUNT_NUMBER:role/ROLE_NAME_2,arn:aws:iam::ACCOUNT_NUMBER:saml-provider/PROVIDER_NAME</AttributeValue>
  <AttributeValue>arn:aws:iam::ACCOUNT_NUMBER:role/ROLE_NAME_3,arn:aws:iam::ACCOUNT_NUMBER:saml-provider/PROVIDER_NAME</AttributeValue>
</Attribute>

要从浏览器中查看您的 SAML 响应,请按照如何在浏览器中查看 SAML 响应以排查问题中的步骤进行操作。

解决方法

如果您使用 Okta 中的 Use Group Mapping(使用组映射)设置,请按照“使用多个 AWS 账户连接到 Okta”下的步骤进行操作。如果没有,请转到“使用单个 AWS 账户连接到 Okta。” 

使用多个 AWS 账户连接到 Okta

如果您使用多个 AWS 账户连接到 Okta,那么 Okta 将使用基于组的角色映射。这意味着 Okta 使用组名称来识别 AWS 账户 ID 和 SSO 的 IAM 角色名称。

注意:请务必在 Okta 中正确输入组筛选器和角色值模式以准确捕获信息:

1.    登录 Okta 管理员控制台。

2.    选择 Applications(应用程序),然后再次选择 Applications(应用程序)。

3.    选择 Sign On(登录),然后选择 Edit(编辑)。

4.    组筛选器是一个自定义的正则表达式,用于捕获 Okta 组名称中的 AWS 账户 ID 和 IAM 角色名称等信息。有关更多信息,请参阅 Okta 的设置文档

安装指南中给出了以下示例:

Group name: "aws#[account alias]#[role name]#[account #]" 
Group Filter: "^aws\#\S+\#(?{{role}}[\w\-]+)\#(?{{accountid}}\d+)$"

如果要自定义组名称,可以扩展此示例。请参阅以下组名称和组筛选器的示例:

Group Name: [account alias]|[role name]|[account #] 
Group Filter: ^\S+\|(?{{role}}[a-zA-Z0-9+=.@\-_]+)\|(?{{accountid}}\d+)$
Group Name: aws_[account #]_[role name] 
Group Filter: ^aws\_(?{{accountid}}\d+)\_(?{{role}}[a-zA-Z0-9+=.@\-_]+)$

注意

  • IAM 角色名称允许使用字母数字和“+=,.@-_”字符。如果您收到组筛选器导致的错误,请考虑使用不属于角色名称的分隔符(例如“#”或“|”)。
  • 如果您想使用 IAM 联合身份验证登录,则您的 IAM 角色名称不应包含“,”。这是因为下面显示的角色值模式使用逗号分隔 SAML 提供程序和角色名称。创建名称中不带逗号的新 IAM 角色以用于 IAM 联合身份验证。

5.    角色值模式必须包含 IAM 角色和 SAML 提供商的 ARN,并用逗号分隔。将本示例中的 SAML 提供商名称替换为 Okta 实例的提供商名称。您可以在 AWS IAM 控制台的身份提供商下找到此信息。

arn:aws:iam::${accountid}:saml-provider/[SAML Provider Name],arn:aws:iam::${accountid}:role/${role}

**注意:**所有 AWS 账户的 SAML 提供商名称必须相同。

6.    选择 Save(保存)。

7.    测试用户从 Okta 登录到 AWS 以确认错误是否得到解决。

使用单个 AWS 账户连接到 Okta

对于单个账户设置,Okta 会自动设置角色价值模式。如果您在单个账户集成中看到“您的请求包含无效的 SAML 响应。要注销,请单击此处”的错误,请向 Okta 提出支持案例以调查该问题。


相关信息

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

如何为 AWS 账户联合身份验证配置 SAML 2.0

AWS 官方
AWS 官方已更新 2 年前