

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 计划在 Amazon Connect 中的身份管理
<a name="connect-identity-management"></a>

开始[设置 Amazon Connect 实例](amazon-connect-instances.md)之前，应确定要如何管理您的 Amazon Connect 用户。用户是指任何需要 Amazon Connect 账户的人：座席、呼叫中心经理、分析师等。

**一旦创建实例，则不能更改为身份管理选择的选项**。相反，您必须删除实例并创建一个新实例。但是，如果删除实例，您将失去该实例的所有配置设置和指标数据。

当您创建实例时，您可以从以下身份管理解决方案中选择一个：
+ **通过 Amazon Connect 存储用户** - 如果您要在 Amazon Connect 内创建和管理用户账户，则可以选择此选项。

  在 Amazon Connect 中管理用户时，每个用户的用户名和密码都特定于 Amazon Connect。用户必须记住自己的用户名和密码才能登录 Amazon Connect。
+ **链接到现有目录** - 选择此选项可使用现有的 Active Directory。用户将使用其公司凭证登录 Amazon Connect。

  如果您选择此选项，则目录必须与您的账户关联 Directory Service，并在您创建实例的同一区域中进行设置，并且处于活动状态。如果您计划选择此选项，应先准备您的目录，然后再创建 Amazon Connect 实例。有关更多信息，请参阅 [在 Amazon Connect 中使用现有目录进行身份管理](directory-service.md)。
+ **基于 SAML 2.0 的身份验证** - 如果要利用现有的网络身份提供商对用户进行联合身份验证，使其能够访问 Amazon Connect，则选择此选项。用户只能使用通过您的身份提供商配置的链接登录 Amazon Connect。如果您计划选择此选项，应先将环境配置为采用 SAML，然后再创建 Amazon Connect 实例。有关更多信息，请参阅 [使用 IAM 为 Amazon Connect 配置 SAML](configure-saml.md)。

# 在 Amazon Connect 中使用现有目录进行身份管理
<a name="directory-service"></a>

如果您已经在使用 Directory Service 目录来管理用户，则可以使用同一个目录来管理 Amazon Connect 中的用户账户。您也可以在中创建一个新目录 Directory Service 以用于 Amazon Connect。您选择的目录必须与您的 AWS 账户相关联，并且必须在您创建实例的 AWS 地区处于活动状态。一个 Directory Service 目录一次只能关联一个 Amazon Connect 实例。若要该目录关联另外的实例，必须删除与该目录已经关联的实例。

Amazon Connect 支持以下 Directory Service 目录：
+ [微软 Active Direct](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) ory —Directory Service 允许你将微软活动目录作为托管服务运行。
+ [Active Directory Connector](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_ad_connector.html) — AD Connector 是一个目录网关，可用来将目录请求重定向到您的本地 Microsoft Active Directory。
+ [Simple Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_simple_ad.html) — Simple AD 是由 Samba 4 Active Directory Compatible Server 提供支持的一个独立托管目录。

在创建实例后，您不能更改您选择的身份选项。如果决定更改所选择的目录，只能删除该实例，然后新建一个。删除实例后，将失去该实例的所有配置设置和指标数据。

使用 Amazon Connect 中的现有或专有目录无需额外付费。有关与使用相关的费用的信息 Directory Service，请参阅[Directory Service 定价概览](https://aws.amazon.com/directoryservice/pricing/)。

以下限制适用于使用 Directory Service创建的所有新目录：
+ 目录名称只能包含字母数字。只能使用“.”字符。
+ 目录与 Amazon Connect 实例关联后，不能解除其关联。
+ 一个 Amazon Connect 实例中只能添加一个目录。
+ 不能在多个 Amazon Connect 实例间共享目录。

# 使用 IAM 为 Amazon Connect 配置 SAML
<a name="configure-saml"></a>

Amazon Connect 支持身份联合，方法是使用 AWS IAM 配置安全断言标记语言 (SAML) 2.0，以启用从您的组织到 Amazon Connect 实例的基于 Web 的单点登录 (SSO)。这样，您的用户就可以登录组织中由 SAML 2.0 兼容身份提供商 (IdP) 托管的门户，并以单点登录体验来登录 Amazon Connect 实例，而无需为 Amazon Connect 提供单独的凭证。

## 重要提示
<a name="saml-important-notes"></a>

在开始之前，请注意以下事项：
+ 这些说明不适用于 Amazon Connect Global Resiliency 部署。有关适用于 Amazon Connect Global Resiliency 的信息，请参阅[将您的身份提供商（IdP）与 Amazon Connect Global Resiliency SAML 登录端点集成](integrate-idp.md)。
+ 选择基于 SAML 2.0 的身份验证作为 Amazon Connect 实例的身份管理方法需要配置 [AWS Identity and Access Management 联合身份验证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-saml.html)。
+ Amazon Connect 中的用户名必须与身份提供 RoleSessionName 商返回的 SAML 响应中指定的 SAML 属性相匹配。
+ Amazon Connect 不支持反向联合。也就是说，您无法直接登录 Amazon Connect。如果您尝试，则会收到*会话已过期*消息。身份验证应通过身份提供商 (IdP) 完成，而不是通过服务提供商 (SP) (Amazon Connect) 完成。
+ 默认情况下，大多数身份提供商使用全球 AWS 登录终端节点作为应用程序使用者服务 (ACS)，该服务托管在美国东部（弗吉尼亚北部）。建议覆盖此值，以使用与在其中创建实例的 AWS 区域 匹配的区域端点。
+ 所有 Amazon Connect 用户名都区分大小写，即使在使用 SAML 时也是如此。
+ 如果您拥有使用 SAML 设置的旧 Amazon Connect 实例，并且需要更新您的 Amazon Connect 域，请参阅[个人设置](update-your-connect-domain.md#new-domain-settings)。

## 将 SAML 与 Amazon Connect 结合使用的概述
<a name="saml-overview"></a>

下图显示了 SAML 请求验证用户身份并与 Amazon Connect 联合的步骤顺序。它不是威胁模型的流程图。

![\[向 Amazon Connect 提出 SAML 身份验证请求的请求流程概述。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/saml-overview.png)


SAML 请求将经历以下步骤：

1. 用户浏览到包含 Amazon Connect 登录链接的内部门户。该链接由身份提供商定义。

1. 联合身份验证服务请求从组织的身份存储进行身份验证。

1. 该身份存储将对用户进行身份验证，并将身份验证响应返回到联合身份验证服务。

1. 在身份验证成功后，联合身份验证服务会将 SAML 断言发布到用户的浏览器。

1. 用户的浏览器将 SAML 断言发布到 AWS 登录 SAML 端点 (https://signin.aws.amazon.com/saml)。 AWS 登录接收 SAML 请求，处理请求，对用户进行身份验证，并使用身份验证令牌启动浏览器重定向到 Amazon Connect 终端节点。

1. Amazon Connect 使用中的 AWS身份验证令牌对用户进行授权，并在其浏览器中打开 Amazon Connect。

## 为 Amazon Connect 启用基于 SAML 的身份验证
<a name="enable-saml"></a>

以下为启用和配置 SAML 身份验证以用于您的 Amazon Connect 实例所需的步骤：

1. 创建一个 Amazon Connect 实例，选择基于 SAML 2.0 的身份验证来进行身份管理。

1. 在您的身份提供商和 AWS之间启用 SAML 联合。

1. 将 Amazon Connect 用户添加到您的 Amazon Connect 实例。使用您在创建实例时创建的管理员账户登录实例。转至**用户管理**页面，然后添加用户。
**重要**  
**有关用户名中允许使用的字符列表**，请参阅[CreateUser](https://docs.aws.amazon.com/connect/latest/APIReference/API_CreateUser.html)操作中该`Username`属性的文档。
 由于 Amazon Connect 用户和 AWS IAM 角色之间存在关联，因此用户名必须与您的 AWS IAM 联合集成配置完全匹配，后者通常会成为您目录中的用户名。 RoleSessionName 用户名的格式应与[RoleSessionName](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)和 [Amazon Connect 用户的](https://docs.aws.amazon.com/connect/latest/APIReference/API_CreateUser.html#connect-CreateUser-request-DirectoryUserId)格式条件相匹配，如下图所示：  

![\[rolesessionname 和 Amazon Connect 用户的韦恩图。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/saml-ven-diagram.png)


1. 针对 SAML 断言、身份验证响应和中继状态配置您的身份提供商。用户登录到您的身份提供商。成功时，用户将被重定向到您的 Amazon Connect 实例。IAM 角色用于与联合 AWS，从而允许访问 Amazon Connect。

## 在创建实例期间选择基于 SAML 2.0 的身份验证
<a name="create-saml-instance"></a>

在创建 Amazon Connect 实例时，可选择基于 SAML 2.0 的身份验证选项用于身份管理。在第二步中，当您为实例创建管理员时，所指定的用户名必须完全匹配您的现有网络目录中的相应用户名。没有用来为管理员指定密码的选项，因为密码是通过您的现有目录进行管理的。管理员在 Amazon Connect 中创建并获得 **Admin** 安全配置文件。

您可以通过您的 IdP 并使用管理员账户添加其他用户，以登录您的 Amazon Connect 实例。

## 在您的身份提供商和之间启用 SAML 联合 AWS
<a name="enable-saml-federation"></a>

要为 Amazon Connect 启用基于 SAML 的身份验证，必须在 IAM 控制台中创建一个身份提供商。有关更多信息，请参阅允许 [SAML 2.0 联合用户访问 AWS 管理控制台](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-saml.html)。

为 Amazon Connect 创建身份提供商 AWS 的过程与创建身份提供商的过程相同。上述流程图中的步骤 6 说明客户端会发送到您的 Amazon Connect 实例，而不是 AWS 管理控制台。

启用 SAML 联合所需的步骤 AWS 包括：

1. 在中创建 SAML 提供商。 AWS有关更多信息，请参阅[创建 SAML 身份提供商](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html)。

1. 使用 AWS 管理控制台创建用于 SAML 2.0 联合身份验证的 IAM 角色。仅为联合身份验证创建一个角色（仅需要一个角色并用于联合身份验证）。IAM 角色决定通过您的身份提供商登录的用户在 AWS中拥有的权限。在此示例中，这些权限用来访问 Amazon Connect。使用 Amazon Connect 中的安全配置文件，可以控制访问 Amazon Connect 功能的权限。有关更多信息，请参阅[创建用于 SAML 2.0 联合身份验证的角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)。

   在步骤 5 中，选择 “**允许编程访问 AWS 和管理控制台**”。创建过程*准备创建用于 SAML 2.0 联合身份验证的角色*中的主题所描述的信任策略。然后，创建一个策略将权限分配到您的 Amazon Connect 实例。可以在*为基于 SAML 的联合身份验证创建角色*过程的步骤 9 中开始分配权限。

**创建向用于 SAML 联合身份验证的 IAM 角色分配权限的策略**

   1. 在**附加权限策略**页面上，选择**创建策略**。

   1. 在**创建策略**页面上，选择 **JSON**。

   1. 复制以下示例策略之一，将其粘贴到 JSON 策略编辑器中，以替换任何现有文本。可以使用策略来启用 SAML 联合身份验证，或根据您的特定要求对其进行自定义。

      使用该策略为特定 Amazon Connect 实例中的所有用户启用联合身份验证。要进行基于 SAML 的身份验证，可将 `Resource` 的值替换为您创建的实例的 ARN：

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
         "Statement": [
              {
                  "Sid": "Statement1",
                  "Effect": "Allow",
                  "Action": "connect:GetFederationToken",
                  "Resource": [
                      "arn:aws:connect:us-east-1:361814831152:instance/2fb42df9-78a2-2e74-d572-c8af67ed289b/user/${aws:userid}"
                  ]
              }
          ]
      }
      ```

------

      使用该策略为特定 Amazon Connect 实例启用联合身份验证。将 `connect:InstanceId` 的值替换为您的实例的实例 ID。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "Statement2",
                  "Effect": "Allow",
                  "Action": "connect:GetFederationToken",
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "connect:InstanceId": "2fb42df9-78a2-2e74-d572-c8af67ed289b"
                      }
                  }
              }
          ]
      }
      ```

------

      使用该策略为多个实例启用联合身份验证。请注意所列实例周围的方括号 IDs。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "Statement2",
                  "Effect": "Allow",
                  "Action": "connect:GetFederationToken",
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "connect:InstanceId": [
                          "2fb42df9-78a2-2e74-d572-c8af67ed289b", 
                          "1234567-78a2-2e74-d572-c8af67ed289b"]
                      }
                  }
              }
          ]
      }
      ```

------

   1. 创建策略后，选择**下一步：审核**。然后返回到[创建用于 SAML 2.0 联合身份验证的角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)主题中*创建用于基于 SAML 的联合身份验证的角色*过程中的步骤 10。

1. 将您的网络配置为适用于 AWS的 SAML 提供商。有关更多信息，请参阅允许 [SAML 2.0 联合用户访问 AWS 管理控制台](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-saml.html)。

1. 为身份验证响应配置 SAML 断言。有关更多信息，请参阅[为身份验证响应配置 SAML 断言](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_assertions.html)。

1. 对于 Amazon Connect，请将**应用程序启动 URL** 留空。

1. 覆盖身份提供商中的应用程序使用者服务 (ACS) URL，以使用与您的 Amazon Connect 实例一致 AWS 区域 的区域终端节点。有关更多信息，请参阅 [将身份提供商配置为使用区域 SAML 端点](#regionally-isolated-saml)。

1. 配置身份提供商的中继状态以指向您的 Amazon Connect 实例。用于中继状态的 URL 的构成如下：

   `https://region-id.console.aws.amazon.com/connect/federate/instance-id`

   将替换为您创建 Amazon Connect 实例的地区名称，例如美国东部（弗吉尼亚北部）的 us-east-1。*region-id*将*instance-id*替换为您的实例的实例 ID。

    GovCloud 例如，URL 是 **https://console.amazonaws-us-gov.com/**: 
   + https://console.amazonaws-us-gov.com/connect/联邦/实例 ID
**注意**  
通过在 Amazon Connect 控制台中选择实例别名，您可以找到您的实例的实例 ID。实例 ID 是**概述**页面上显示的**实例 ARN** 中“/instance”后面的数字和字母集。例如，在下列实例 ARN 中的实例 ID 为 *178c75e4-b3de-4839-a6aa-e321ab3f3770*。  
arn:aws:connect:us-east-1:450725743157:instance/*178c75e4-b3de-4839-a6aa-e321ab3f3770*

## 将身份提供商配置为使用区域 SAML 端点
<a name="regionally-isolated-saml"></a>

为了提供最高可用性，建议使用与您的 Amazon Connect 实例一致的区域 SAML 端点，而不是默认的全局端点。

以下步骤与 IdP 无关；它们适用于任何 SAML IdP（例如 Okta、Ping、、 OneLogin Shibboleth、ADFS、AzuRead 等）。

1. 更新（或覆盖）断言使用者服务 (ACS) URL。有两种方法可以做到这一点：
   + **选项 1**：下载 S AWS AML 元数据并将该`Location`属性更新为您选择的区域。将此新版本的 AWS SAML 元数据加载到您的 IdP 中。

     以下是修订的示例：

      `<AssertionConsumerService index="1" isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://region-id.signin.aws.amazon.com/saml"/>`
   + **选项 2**：覆盖您的 IdP 中的 AssertionConsumerService (ACS) 网址。对于 IdPs 像 Okta 这样提供预先制作的 AWS 集成，你可以在管理员控制台中覆盖 ACS URL。 AWS 使用相同的格式覆盖您选择的区域（例如，https://*region-id*.signin.aws.amazon.com/saml）。

1. 更新关联的角色信任策略：

   1. 需要对信任给定身份提供商的每个账户中的每个角色执行此步骤。

   1. 编辑信任关系，并将单数 `SAML:aud` 条件替换为多值条件。例如：
      + 默认值：” `SAML:aud` “:” https://signin.aws.amazon.com /saml”。
      + 经过修改：” `SAML:aud` “: ["https://signin.aws.amazon.com/saml", "https://*region-id*.signin.aws.amazon.com/saml”]

   1. 请事先对信任关系进行这些更改。在事件发生期间，不应将它们作为计划的一部分来完成。

1. 为特定于区域的控制台页面配置中继状态。

   1. 如果您不执行此最后一步，则无法保证特定于区域的 SAML 登录过程会将用户转发到同一区域内的控制台登录页面。此步骤因身份提供商不同而变化最大，但有一些博客（例如，[如何使用 SAML 将联合身份验证用户自动转到特定的 AWS 管理控制台页面](https://aws.amazon.com/blogs//security/how-to-use-saml-to-automatically-direct-federated-users-to-a-specific-aws-management-console-page/)）展示了如何使用中继状态来实现深层链接。

   1. 使用 technique/parameters 适合您的 IdP 的，将中继状态设置为匹配的控制台终端节点（例如，https://*region-id*.console.aws.amazon。 com/connect/federate/*instance-id*)。

**注意**  
确保您的其他区域中未禁用 STS。
确保 “否” SCPs 会阻止 STS 操作在您的其他区域。

## 在中继状态 URL 中使用目的地
<a name="destination-relay"></a>

当您为身份提供商配置中继状态时，可以使用 URL 中的目的地参数将用户导航到 Amazon Connect 实例中的特定页面。例如，当座席登录时，使用链接直接打开 CCP。必须为用户分配一个安全配置文件，以授予用户对实例中该页面的访问权限。例如，要将座席发送到 CCP，请为中继状态使用类似于以下内容的 URL。必须将 [URL 编码](https://en.wikipedia.org/wiki/Percent-encoding)用于在 URL 中使用的目的地值：
+ `https://us-east-1.console.aws.amazon.com/connect/federate/instance-id?destination=%2Fccp-v2%2Fchat&new_domain=true`

有效 URL 的另一个示例是：
+ `https://us-east-1.console.aws.amazon.com/connect/federate/instance-id?destination=%2Fagent-app-v2`

 GovCloud 例如，URL 是 **https://console.amazonaws-us-gov.com/**。所以地址将为：
+ `https://console.amazonaws-us-gov.com/connect/federate/instance-id?destination=%2Fccp-v2%2Fchat&new_domain=true`

如果您想将目的地参数配置为 Amazon Connect 实例之外的 URL（例如您自己的自定义网站），请先将该外部域添加到账户的已批准源中。例如，按以下顺序执行这些步骤：

1. 在 Amazon Connect 控制台中，将 https://*your-custom-website*.com 添加到您批准的来源。有关说明，请参阅[使用 Amazon Connect 中的集成应用程序的允许列表](app-integration.md)。

1. 在您的身份提供商中，将中继状态配置为 ` https://your-region.console.aws.amazon.com/connect/federate/instance-id?destination=https%3A%2F%2Fyour-custom-website.com`

1. 当您的代理登录时，他们会被直接带到 https://*your-custom-website*.com。

## 将用户添加到您的 Amazon Connect 实例
<a name="saml-add-users"></a>

将用户添加到您的连接实例中，并确保用户名与您的现有目录中的用户名完全匹配。如果名称不匹配，则用户虽可以登录身份提供商，但不能登录 Amazon Connect，因为在 Amazon Connect 中不存在具有该用户名的用户账户。可以在**用户管理**页面上手动添加用户，也可以使用 CSV 模板批量上传用户。将用户添加到 Amazon Connect 后，可以分配安全配置文件和其他用户设置。

如果用户登录到身份提供商，但在 Amazon Connect 中未找到具有相同用户名的账户，则会显示如下所示的**访问遭拒**消息。

![\[用户名不在 Amazon Connect 中的用户出现拒绝访问错误。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/saml-access-denied.png)

<a name="bulk-user-upload"></a>
**使用模板批量上传用户**  
您可以通过将用户添加到 CSV 文件来导入用户。然后，您可以将 CSV 文件导入到您的实例，这会添加该文件中的所有用户。如果您通过上传 CSV 文件来添加用户，请确保您为 SAML 用户使用模板。您可以在 Amazon Connect 的**用户管理**页面上找到相关模板。基于 SAML 的身份验证使用另一个模板。如果您之前下载了该模板，则应在为实例设置了基于 SAML 的身份验证后，下载**用户管理**页面上提供的版本。该模板不应包含用于电子邮件或密码的列。

## SAML 用户登录和会话持续时间
<a name="user-sessions"></a>

当您在 Amazon Connect 中使用 SAML 时，用户必须通过您的身份提供商 (IdP) 登录到 Amazon Connect。您的 IdP 已配置为与集成。 AWS在身份验证后，为其会话创建一个令牌。然后，用户被重定向到您的 Amazon Connect 实例，并自动使用单点登录功能登录到 Amazon Connect。

按照最佳实践，还应为您的 Amazon Connect 用户定义一个当其使用完 Amazon Connect 后要注销的流程。他们应当同时从 Amazon Connect 和您的身份提供商注销。否则，下一个登录到同一台计算机的人员就可以无需密码而登录 Amazon Connect，因为之前会话的令牌在这次会话期间仍然有效。有效期为 12 小时。
<a name="session-expire"></a>
**关于会话过期**  
Amazon Connect 会话在用户登录 12 小时后过期。12 小时后，用户将自动被注销，即便他们仍在通话中。如果您的座席保持登录状态的时间超过 12 小时，则他们需要在会话令牌过期之前刷新此令牌。要创建新的会话，座席需要注销 Amazon Connect 和您的 IdP，然后重新登录。这将重置在令牌上设置的会话计时器，避免座席在接待客户期间被注销。如果在会话过期时用户仍在登录，则会显示以下消息。要再次使用 Amazon Connect，用户需要登录到您的身份提供商。

![\[当基于 SAML 的用户的会话过期时，将显示错误消息。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/saml-session-expired.png)


**注意**  
如果您在登录时看到**会话已过期**消息，则可能只需要刷新会话令牌即可。访问您的身份提供商并登录。刷新 Amazon Connect 页面。如果您仍然收到此消息，请联系您的 IT 团队。

# 使用 Amazon Connect 排查 SAML 问题
<a name="troubleshoot-saml"></a>

本文介绍如何排除和解决客户在将 SAML 与 Amazon Connect 结合使用时遇到的一些最常见问题。

如果您要对与其他身份提供商（例如 Okta、、 PingIdentify Azure AD 等）的集成进行故障排除，请参阅 A [mazon Connect SSO 设置研讨会](https://catalog.workshops.aws/workshops/33e6d0e7-f927-4531-abb1-f28a86ba0872/en-US)。

## 错误消息：访问被拒绝。您的账户已经过身份验证，但尚未登入此应用程序。
<a name="troubleshoot-saml-access-denied"></a>

![\[错误消息：访问被拒绝。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/saml-troubleshooting-access-denied.png)


### 这意味着什么？
<a name="troubleshoot-saml-access-denied-what"></a>

此错误表示用户已使用 SAML 成功向 AWS SAML 登录端点进行身份验证。但是，用户无法 matched/found 进入 Amazon Connect。此消息通常提示出现以下问题之一：
+ Amazon Connect 中的用户名与在身份提供程序返回的 SAML 响应中指定的 `RoleSessionName` SAML 属性不匹配。
+ 该用户在 Amazon Connect 中不存在。
+ 通过 SSO 为用户分配了两个单独的配置文件。

### 解决方案
<a name="troubleshoot-saml-access-denied-resolution"></a>

使用以下步骤检查身份提供商返回的 RoleSessionName SAML 响应中指定的 SAML 属性，然后检索并与 Amazon Connect 中的登录名进行比较。

1. 在 end-to-end登录过程中执行 HAR 捕获（**H** TTP **AR** chive）。这将从浏览器端捕获网络请求。使用首选文件名保存 HAR 文件，例如 **saml.har**。

   有关说明，请参阅[如何通过浏览器为 Support 案例创建 HAR 文件？ AWS](https://aws.amazon.com/premiumsupport/knowledge-center/support-case-browser-har-file/) 

1. 使用文本编辑器在 HAR 文件 SAMLResponse 中查找。或者，运行以下命令：

   `$ grep -o "SAMLResponse=.*&" azuresaml.har | sed -E 's/SAMLResponse=(.*)&/\1/' > samlresponse.txt`
   + 这会在 HAR 文件 SAMLresponse 中搜索，然后将其保存到 **samlresponse.txt** 文件中。
   + 响应采用 URL 编码，而内容采用 Base64 编码。

1. 对 URL 响应进行解码，然后使用第三方工具或简单脚本解码 Base64 内容。例如：

   `$ cat samlresponse.txt | python3 -c "import sys; from urllib.parse import unquote; print(unquote(sys.stdin.read()));" | base64 --decode > samlresponsedecoded.txt`

   此脚本使用一个简单的 python 命令 SAMLResponse 从其原始 URL 编码格式中解码。然后，它解码来自 Base64 的响应，并以纯文本格式输出 SAML 响应。

1. 检查所需属性的解码响应。例如，下图显示如何检查 `RoleSessionName`：  
![\[用于检查 rolesessionname 的 grep 命令。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/saml-troubleshooting-rolesessionname.png)

1. 检查从上一步返回的用户名是否以用户身份存在于您的 Amazon Connect 实例中：

   \$1 aws connect list-users --instance-id [INSTANCE\$1ID] \$1 grep \$1username
   + 如果最终 grep 没有返回结果，这意味着在您的 Amazon Connect 实例中不存在此用户，或者此用户是使用不同的大小写创建的。
   + 如果您的 Amazon Connect 实例有许多用户，那么 ListUsers API 调用的响应可能会被分页。使用由此 API 返回的 `NextToken` 获取其余用户。有关更多信息，请参阅 [ListUsers](https://docs.aws.amazon.com/connect/latest/APIReference/API_ListUsers.html)。

### 示例 SAML 响应
<a name="example-samlresponse"></a>

以下是示例 SAML 响应中的图像。在这种情况下，身份提供程序 (IdP) 是 Azure Active Directory (Azure AD)。

![\[SAML 响应示例。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/saml-troubleshooting-saml-response.png)


## 错误消息：访问被拒绝，请联系您的 AWS 账户管理员寻求帮助。
<a name="troubleshoot-saml-contact-admin"></a>

![\[错误消息：访问被拒绝。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/saml-troubleshooting-access-denied-admin.png)


### 这意味着什么？
<a name="troubleshoot-saml-bad-request-what"></a>

已使用 SAML 成功对用户所代入的角色进行身份验证。但是，该角色无权调用适用于 Amazon Connect GetFederationToken 的 API。此调用是必需的，以便用户可以使用 SAML 登录到您的 Amazon Connect 实例。

### 解决方案
<a name="troubleshoot-saml-bad-request-resolution"></a>

1. 将具有 `connect:GetFederationToken` 的权限的策略附加到在错误消息中找到的角色。以下是策略示例：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Statement1",
               "Effect": "Allow",
               "Action": "connect:GetFederationToken",
               "Resource": [
                   "arn:aws:connect:ap-southeast-2:111122223333:instance/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/user/${aws:userid}"
               ]
           }
       ]
   }
   ```

------

1. 使用 IAM 控制台附加策略。或者，使用 attach-role-policy API，例如：

   `$ aws iam attach-role-policy —role-name [ASSUMED_ROLE] —policy_arn [POLICY_WITH_GETFEDERATIONTOKEN]`

## 错误消息：会话已过期
<a name="saml-sessionexpired-message"></a>

如果您在登录时看到**会话已过期**消息，则可能只需要刷新会话令牌即可。访问您的身份提供商并登录。刷新 Amazon Connect 页面。如果您仍然收到此消息，请联系您的 IT 团队。