

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

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

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

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

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

## 在 Connect 客户中使用 SAML 的概述
<a name="saml-overview"></a>

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

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


SAML 请求将经历以下步骤：

1. 用户浏览内部门户，其中包含用于登录 Connect Customer 的链接。该链接由身份提供商定义。

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

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

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

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

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

## 为 Connect 客户启用 SAML-based 身份验证
<a name="enable-saml"></a>

要启用和配置 SAML 身份验证以用于您的 Connect Customer 实例，需要执行以下步骤：

1. 创建 Connect Customer 实例，然后选择基于 SAML 2.0 的身份验证进行身份管理。

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

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

![Ven 角色会话名称和 Connect Customer 用户的示意图。](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/saml-ven-diagram.png)


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

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

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

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

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

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

为 Connect 客户创建身份提供者的 AWS 过程与创建身份提供者的过程相同。上面流程图中的第 6 步显示客户端被发送到您的 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中拥有的权限。在本例中，权限用于访问 Connect 客户。您可以使用 Connect Customer 中的安全配置文件来控制 Connect Customer 功能的权限。有关更多信息，请参阅[创建用于 SAML 2.0 联合身份验证的角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)。

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

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

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

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

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

      使用此策略为特定 Connect Customer 实例中的所有用户启用联合。要进行 SAML-based 身份验证，请`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}"
                  ]
              }
          ]
      }
      ```

------

      使用此策略启用与特定的 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"
                      }
                  }
              }
          ]
      }
      ```

------

      使用该策略为多个实例启用联合身份验证。注意在所列实例 ID 两侧加括号。

------
#### [ 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 * SAML-based联合创建角色*（控制台）” 主题中 “为联合身份验证创建角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)” 过程中的步骤 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. 对于 Connect 客户，请将**应用程序起始网址**留空。

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

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

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

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

    GovCloud 举个例子，网址是 **https://console.amazonaws-us-gov.com/**：
   + https://console.amazonaws-us-gov.com/connect/federate/instance-id
**注意**  
您可以通过在 Connect Customer 控制台中选择实例别名来找到您的实例的实例 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>

为了提供最佳可用性，我们建议使用与您的 Connect Customer 实例一致的区域 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 网址。 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. 为 Region-specific 控制台页面配置中继状态。

   1. 如果您不执行最后一步，则无法保证 Region-specific 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。
确保您的其他区域中没有 SCP 阻止 STS 操作。

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

在为身份提供者配置中继状态时，您可以使用网址中的目标参数将用户导航到您的 Connect Customer 实例中的特定页面。例如，当座席登录时，使用链接直接打开 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 例如，网址是**https://console.amazonaws-us-gov.com/**。所以地址将为：
+ `https://console.amazonaws-us-gov.com/connect/federate/instance-id?destination=%2Fccp-v2%2Fchat&new_domain=true`

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

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

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

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

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

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

当用户登录身份提供商，但在 Connect Customer 中找不到具有相同用户名的帐户时，将显示以下**拒绝访问**消息。

![如果用户名不在 Connect Customer 中，则出现拒绝访问错误。](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 用户使用模板。你可以在 Connect Customer 的**用户管理**页面上找到。使用不同的模板进行 SAML-based 身份验证。如果您之前下载过模板，则应在设置实例并使用 SAML-based身份验证后下载**用户管理**页面上提供的版本。该模板不应包含用于电子邮件或密码的列。

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

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

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

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


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