使用 IAM 为 Amazon Connect 配置 SAML - Amazon Connect

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

使用 IAM 为 Amazon Connect 配置 SAML

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

重要提示

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

  • 这些说明不适用于 Amazon Connect Global Resiliency 部署。有关适用于 Amazon Connect Global Resiliency 的信息,请参阅将您的身份提供商 (IdP) 与 Amazon Connect 全球弹性SAML登录终端节点集成

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

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

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

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

  • 所有 Amazon Connect 用户名均区分大小写,即使在使用 SAML 时也是如此。

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

将 SAML 与 Amazon Connect 结合使用的概述

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

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

SAML 请求将经历以下步骤:

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

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

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

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

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

  6. 使用来自 AWS 的身份验证令牌时,Amazon Connect 将向用户授权并在其浏览器中打开 Amazon Connect。

为 Amazon Connect 启用基于 SAML 的身份验证

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

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

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

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

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

    • 由于 Amazon Connect 用户与 AWS IAM 角色之间存在关联,因此用户名必须与 AWS IAM 联合身份验证集成中配置的 RoleSessionName 完全匹配,后者通常最终会成为目录中的用户名。用户名的格式应与 RoleSessionNameAmazon Connect 用户的格式条件的交集相匹配,如下图所示:

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

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

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

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

在身份提供商和 AWS 之间启用 SAML 联合身份验证

要为 Amazon Connect 启用基于 SAML 的身份验证,必须在 IAM 控制台中创建一个身份提供商。有关更多信息,请参阅使 SAML 2.0 联合身份验证用户能够访问 AWS 管理控制台

为 AWS 创建身份提供商的过程对于 Amazon Connect 是相同的。上述流程图中的步骤 6 说明客户端会发送到您的 Amazon Connect 实例,而不是 AWS Management Console。

对 AWS 启用 SAML 联合身份验证所需的步骤包括:

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

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

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

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

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

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

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

      { "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。

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

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

      { "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 的联合身份验证的角色过程中的步骤 10。

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

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

  5. 对于 Amazon Connect,请将应用程序启动 URL 留空。

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

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

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

    region-id 替换为您在其中创建了 Amazon Connect 实例的区域名称,如代表美国东部(弗吉尼亚州北部)的 us-east-1。将 instance-id 替换为您的实例的实例 ID。

    对于 GovCloud 实例,URL 为 https://console.amazonaws-us-gov.com/

    • https://console.amazonaws-us-gov.com/connect/federate/instance-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 端点

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

以下步骤与 IdP 无关;它们适用于任何 SAML IdP(例如 Okta、Ping、OneLogin、Shibboleth、ADFS、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) URL。对于像 Okta 这样提供预打包 AWS 集成的 IdP,您可以在 AWS 管理员控制台中覆盖 ACS URL。使用相同的格式覆盖您选择的区域(例如,https://region-id.signin.aws.amazon.com/saml)。

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

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

    2. 编辑信任关系,并将单数 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”]

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

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

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

    2. 使用适合您的 IdP 的技术/参数,将中继状态设置为匹配的控制台端点(例如,https://region-id.console.aws.amazon.com/connect/federate/instance-id)。

注意
  • 确保您的其他区域中未禁用 STS。

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

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

当您为身份提供商配置中继状态时,可以使用 URL 中的目的地参数将用户导航到 Amazon Connect 实例中的特定页面。例如,当座席登录时,使用链接直接打开 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 实例,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 添加到您的已批准源中。有关说明,请参阅为集成应用程序使用允许列表

  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。

将用户添加到您的 Amazon Connect 实例

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

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

当用户尝试通过其身份提供商登录 Amazon Connect 而其用户名不在 Amazon Connect 中时,将显示错误消息。
使用模板批量上传用户

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

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

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

按照最佳实践,还应为您的 Amazon Connect 用户定义一个当其使用完 Amazon Connect 后要注销的流程。他们应当同时从 Amazon Connect 和您的身份提供商注销。否则,下一个登录到同一台计算机的人员就可以无需密码而登录 Amazon Connect,因为之前会话的令牌在这次会话期间仍然有效。有效期为 12 小时。

关于会话过期

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

当基于 SAML 的用户的会话过期时,将显示错误消息。
注意

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