View a markdown version of this page

使用 IAM 为 Connect 客户配置 SAML - Amazon Connect Customer

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

使用 IAM 为 Connect 客户配置 SAML

Connect Customer 通过在 AWS IAM 中配置安全断言标记语言 (SAML) 2.0 来支持身份联合,以启用从您的组织到 Connect 客户实例的基于 Web 的单点登录 (SSO)。这允许您的用户登录组织中由 SAML 2.0 兼容身份提供商 (IdP) 托管的门户,并通过单点登录体验登录 Connect Customer 实例,无需为 Connect 客户提供单独的证书。

重要提示

在开始之前,请注意以下事项:

  • 这些说明不适用于 Connect Customer 全球弹性部署。有关适用于互联客户全球业务连续性的信息,请参阅将您的身份提供商 (IdP) 与 Connect Customer 全球弹性 SAML 登录端点集成。

  • 选择基于 SAML 2.0 的身份验证作为 Connect 客户实例的身份管理方法需要配置联合。AWS Identity and Access Management

  • Connect C RoleSessionName ustomer 中的用户名必须与身份提供商返回的 SAML 响应中指定的 SAML 属性相匹配。

  • Connect Customer 不支持反向联邦。也就是说,你无法直接登录 Connect Customer。如果您尝试,则会收到会话已过期消息。身份验证应通过身份提供商 (IdP) 完成,而不是通过服务提供商 (SP) (Connect Customer) 完成。

  • 默认情况下,大多数身份提供商使用全球 AWS 登录端点作为应用程序消费者服务 (ACS),该服务托管在美国东部(弗吉尼亚北部)。建议覆盖此值,以使用与在其中创建实例的 AWS 区域 匹配的区域端点。

  • 所有 Connect Customer 用户名都区分大小写,即使使用 SAML 也是如此。

  • 如果您有使用 SAML 设置的旧 Connect 客户实例,并且需要更新您的 Connect 客户域,请参阅个人设置。

在 Connect 客户中使用 SAML 的概述

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

向 Connect Customer 提出 SAML 身份验证请求的请求流程概述。

SAML 请求将经历以下步骤:

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

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

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

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

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

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

为 Connect 客户启用 SAML-based 身份验证

要启用和配置 SAML 身份验证以用于您的 Connect 客户实例,需要执行以下步骤:

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

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

  3. 将 Connect 客户用户添加到您的 Connect 客户实例中。使用您在创建实例时创建的管理员账户登录实例。转至用户管理页面,然后添加用户。

    重要
    • 有关用户名中允许使用的字符列表,请参阅CreateUser操作中该Username属性的文档。

    • 由于 Connect Customer 用户和 AWS IAM 角色之间的关联,该 RoleSessionName 用户名必须与您的 AWS IAM 联合集成的配置完全匹配,后者通常最终成为您目录中的用户名。用户名的格式应与与 Connect Customer 用户的RoleSessionName格式条件的交叉点相匹配,如下图所示:

      角色会话名称和 “连接客户” 用户的 Ven 示意图。
  4. 针对 SAML 断言、身份验证响应和中继状态配置您的身份提供商。用户登录到您的身份提供商。成功后,它们将被重定向到您的 Connect 客户实例。IAM 角色用于与联合 AWS,这允许访问 Connect 客户。

在创建实例期间选择基于 SAML 2.0 的身份验证

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

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

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

要为 Connect 客户启用 SAML-based 身份验证,您必须在 IAM 控制台中创建身份提供商。有关更多信息,请参阅允许 SAML 2.0 联合身份用户访问 AWS 管理控制台。

为其创建身份提供商的过程对于 Connect Customer 来说 AWS 是相同的。上面流程图中的第 6 步显示客户端被发送到您的 Connect 客户实例,而不是 AWS 管理控制台。

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

  1. 在中创建 SAML 提供商。 AWS有关更多信息,请参阅创建 SAML 身份提供商。

  2. 使用 AWS 管理控制台创建用于 SAML 2.0 联合身份验证的 IAM 角色。仅为联合身份验证创建一个角色(仅需要一个角色并用于联合身份验证)。IAM 角色决定通过您的身份提供商登录的用户在 AWS中拥有的权限。在这种情况下,权限用于访问 Connect 客户。您可以使用 Connect Customer 中的安全配置文件来控制 Connect Customer 功能的权限。有关更多信息,请参阅创建用于 SAML 2.0 联合身份验证的角色(控制台)。

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

    创建向用于 SAML 联合身份验证的 IAM 角色分配权限的策略
    1. 在附加权限策略页面上,选择创建策略。

    2. 在创建策略页面上,选择 JSON。

    3. 复制以下示例策略之一,将其粘贴到 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 Customer 实例的联合。将 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"] } } } ] }
    4. 创建策略后,选择下一步:审核。然后返回到 “为 SAML 2.0 SAML-based 联合创建角色”(控制台)主题中的 “为联合创建角色” 过程中的步骤 10。

  3. 将您的网络配置为适用于 AWS的 SAML 提供商。有关更多信息,请参阅允许 SAML 2.0 联合身份用户访问 AWS 管理控制台。

  4. 为身份验证响应配置 SAML 断言。有关更多信息,请参阅为身份验证响应配置 SAML 断言。

  5. 对于 “连接客户”,将 “应用程序启动 URL” 留空。

  6. 覆盖身份提供商中的应用程序消费者服务 (ACS) URL,以使用与您的 Connect 客户实例一致 AWS 区域 的区域终端节点。有关更多信息,请参阅 将身份提供商配置为使用区域 SAML 端点。

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

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

    将替换为您创建 Connect 客户实例的区域名称,例如美国东部(弗吉尼亚北部)的 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

    注意

    目标中继 URL 不支持 HTTP。如果您指定 HTTP 网址,它会自动转换为 HTTPS。这会影响本地主机 URL 的本地开发。

将身份提供商配置为使用区域 SAML 端点

为了提供最佳可用性,我们建议使用与您的 Connect 客户实例一致的区域 SAML 终端节点,而不是默认的全局终端节点。

以下步骤与 IdP 无关;它们适用于任何 SAML IdP(例如 Okta、Ping、、Shibboleth、ADFS OneLogin、Azuread 等)。

  1. 更新(或覆盖)断言使用者服务 (ACS) URL。有两种方法可以做到这一点:

    • 选项 1:下载 AWS SAML 元数据并将该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 像提供预制 AWS 集成的 Okta 一样,你可以在管理员控制台中覆盖 ACS URL。 AWS 使用相同的格式覆盖您选择的地区(例如,https://region-id.signin.aws.amazon)。com/saml)。

  2. 更新关联的角色信任策略:

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

    2. 编辑信任关系,并将单数 SAML:aud 条件替换为多值条件。例如:

      • 默认:” SAML:aud “:https://signin.aws.amazon.com/saml”。

      • 修改后:” “: [”,SAML:audhttps://signin.aws.amazon.com/saml“https://region-id.signin.aws.amazon。com/saml“]

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

  3. 为 Region-specific 控制台页面配置中继状态。

    1. 如果您没有完成最后一步,则无法保证 Region-specific SAML 登录过程会将用户转发到同一区域内的控制台登录页面。此步骤因身份提供商不同而变化最大,但有一些博客(例如,如何使用 SAML 将联合身份验证用户自动转到特定的 AWS 管理控制台页面)展示了如何使用中继状态来实现深层链接。

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

注意
  • 确保未在其他区域禁用 STS。

  • 确保您的其他区域中没有 SCP 阻止 STS 操作。

在中继状态 URL 中使用目的地

当您为身份提供商配置中继状态时,可以使用 URL 中的目标参数将用户引导至 Connect Customer 实例中的特定页面。例如,当座席登录时,使用链接直接打开 CCP。必须为用户分配一个安全配置文件,以授予用户对实例中该页面的访问权限。例如,要将座席发送到 CCP,请为中继状态使用类似于以下内容的 URL。必须将 URL 编码用于在 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 中使用集成应用程序的许可名单。

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

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

向您的 Connect Customer 实例添加用户

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

当用户登录到身份提供商,但在 Connect Customer 中找不到具有相同用户名的帐户时,将出现以下 “访问被拒绝” 消息。

如果用户名不在 Connect Customer 中,则出现 “访问被拒绝” 错误。
使用模板批量上传用户

您可以通过将用户添加到 CSV 文件来导入用户。然后,您可以将 CSV 文件导入到您的实例,这会添加该文件中的所有用户。如果您通过上传 CSV 文件来添加用户,请确保您为 SAML 用户使用模板。您可以在 “连接客户” 的 “用户管理” 页面上找到。使用不同的模板进行 SAML-based 身份验证。如果您之前下载了该模板,则应在使用 SAML-based身份验证设置实例后下载用户管理页面上可用的版本。该模板不应包含用于电子邮件或密码的列。

SAML 用户登录和会话持续时间

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

作为最佳实践,您还应定义一个流程,让 Connect 客户用户在完成使用 Connect Customer 后注销。他们应该同时注销互联客户和您的身份提供商。如果他们不这样做,则下一个登录到同一台计算机的人无需密码即可登录 Connect Customer,因为先前会话的令牌在会话期间仍然有效。有效期为 12 小时。

关于会话过期

Connect 客户会话在用户登录 12 小时后过期。12 小时后,用户将自动被注销,即便他们仍在通话中。如果您的座席保持登录状态的时间超过 12 小时,则他们需要在会话令牌过期之前刷新此令牌。要创建新会话,代理需要注销 Connect Customer 和您的 IdP,然后重新登录。这将重置在令牌上设置的会话计时器,避免座席在接待客户期间被注销。当用户登录时会话过期时,将出现以下消息。要再次使用 Connect 客户,您必须登录您的身份提供商。

SAML-based用户会话到期时显示的错误消息。
注意

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