

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

# 为单点登录 (SSO) 配置您的身份提供商
<a name="configure-id-federation"></a>

Research and Engineering Studio 与任何 SAML 2.0 身份提供商集成，以验证用户对 RES 门户 这些步骤提供了与您选择的 SAML 2.0 身份提供商集成的指导。如果您打算使用 IAM 身份中心，请参阅[使用 IAM 身份中心设置单点登录 (SSO)](sso-idc.md)。

**注意**  
在 IDP SAML 断言和 Active Directory 中，用户的电子邮件地址必须匹配。您需要将您的身份提供商与 Active Directory 连接起来，并定期同步用户。

**Topics**
+ [配置您的身份提供商](#configure-id-federation_config-idp)
+ [将 RES 配置为使用您的身份提供商](#configure-id-federation_config-res)
+ [在非生产环境中配置您的身份提供商](#configure-id-federation-demo-env)
+ [调试 SAML IdP 问题](#configure-id-federation_debug)

## 配置您的身份提供商
<a name="configure-id-federation_config-idp"></a>

本节提供了使用 RES Amazon Cognito 用户池中的信息配置身份提供商的步骤。

1. RES 假设您有一个 AD（AWS 托管 AD 或自配置 AD），其用户身份允许访问 RES 门户和项目。将您的 AD 连接到您的身份服务提供商并同步用户身份。请查看您的身份提供商的文档，了解如何连接您的 AD 和同步用户身份。例如，请参阅《*AWS IAM Identity Center 用户指南》*中的[使用 Active Directory 作为身份源](https://docs.aws.amazon.com/singlesignon/latest/userguide/gs-ad.html)。

1. 在您的身份提供商 (IdP) 中为 RES 配置 SAML 2.0 应用程序。此配置需要以下参数：
   + **SAML 重定向网址** — 您的 IdP 用来向服务提供商发送 SAML 2.0 响应的网址。
**注意**  
根据 IdP 的不同，SAML 重定向网址可能有不同的名称：  
应用程序 URL
断言消费者服务 (ACS) 网址
ACS POST 绑定网址

**获取网址**

     1. 以**管理员或**集群**管理员**身份登录 RES。

     1. 导航到 “**环境管理**” ⇒ **“常规设置” ⇒ “****身份提供者**”。

     1. 选择 **SAML 重定向网址**。
   + **SAML 受众 URI** — 服务提供商方面 SAML 受众实体的唯一 ID。
**注意**  
根据 IdP 的不同，SAML 受众 URI 的名称可能有所不同：  
ClientID
应用程序 SAML 受众
SP 实体 ID

     按以下格式提供输入。

     ```
     urn:amazon:cognito:sp:user-pool-id
     ```

**要查找您的 SAML 受众 URI**

     1. 以**管理员或**集群**管理员**身份登录 RES。

     1. 导航到 “**环境管理**” ⇒ **“常规设置” ⇒ “****身份提供者**”。

     1. 选择**用户池 ID**。

1. 发布到 RES 的 SAML 断言必须将以下内容 fields/claims 设置为用户的电子邮件地址：
   + SAML 主题或姓名 ID
   + SAML 电子邮件

1. 根据配置，您的 IdP 会添加 fields/claims 到 SAML 断言中。RES 需要这些字段。默认情况下，大多数提供商会自动填写这些字段。如果必须对其进行配置，请参阅以下字段输入和值。

   
   + **AudienceRestriction**：设置为 `urn:amazon:cognito:sp:user-pool-id`。*user-pool-id*替换为您的 Amazon Cognito 用户池的 ID。

     ```
     <saml:AudienceRestriction>
         <saml:Audience> urn:amazon:cognito:sp:user-pool-id
     </saml:AudienceRestriction>
     ```
   + **响应**-设置`InResponseTo`为`https://user-pool-domain/saml2/idpresponse`。*user-pool-domain*替换为您的 Amazon Cognito 用户池的域名。

     ```
     <saml2p:Response 
       Destination="https://user-pool-domain/saml2/idpresponse"
       ID="id123" 
       InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" 
       IssueInstant="Date-time stamp" 
       Version="2.0" 
       xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" 
       xmlns:xs="http://www.w3.org/2001/XMLSchema">
     ```
   + **SubjectConfirmationData**— 设置`Recipient`为您的用户池`saml2/idpresponse`终端节点和`InResponseTo`原始 SAML 请求 ID。

     ```
     <saml2:SubjectConfirmationData 
       InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" 
       NotOnOrAfter="Date-time stamp" 
       Recipient="https://user-pool-domain/saml2/idpresponse"/>
     ```
   + **AuthnStatement**— 按以下方式进行配置：

     ```
     <saml2:AuthnStatement AuthnInstant="2016-10-30T13:13:28.152TZ"
       SessionIndex="32413b2e54db89c764fb96ya2k" SessionNotOnOrAfter="2016-10-30T13:13:28">
         <saml2:SubjectLocality />
         <saml2:AuthnContext>
             <saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml2:AuthnContextClassRef>
         </saml2:AuthnContext>
     </saml2:AuthnStatement>
     ```

1. 如果您的 SAML 应用程序有注销 URL 字段，请将其设置为:。`<domain-url>/saml2/logout`

**获取域名网址**

   1. 以**管理员或**集群**管理员**身份登录 RES。

   1. 导航到 “**环境管理**” ⇒ **“常规设置” ⇒ “****身份提供者**”。

   1. 选择**域名网址**。

1. 如果您的 IdP 接受签名证书以建立与 Amazon Cognito 的信任，请下载亚马逊 Cognito 签名证书并将其上传到您的 IdP 中。

**获取签名证书**

   1. 打开 [Amazon Cognito 控制台](https://console.aws.amazon.com/cognito/v2/idp/user-pools/)。

   1. 选择您的用户池。您的用户池应该是`res-<environment name>-user-pool`。

   1. 选择 “**登录体验**” 选项卡。

   1. 在**联合身份提供商登录**部分，选择**查看签名证书**。  
![\[Amazon Cognito 控制台，在所选用户池的联合身份提供者登录部分中带有查看签名证书按钮。\]](http://docs.aws.amazon.com/zh_cn/res/latest/ug/images/cognito-user-pool-signing-cert.png)

      您可以使用此证书在该信赖方上设置 Active Directory IDP `relying party trust`、添加和启用 SAML 支持。
**注意**  
这不适用于 Keycloak 和 IDC。

   1. 应用程序设置完成后，下载 SAML 2.0 应用程序元数据 XML 或 URL。你将在下一节中使用它。

## 将 RES 配置为使用您的身份提供商
<a name="configure-id-federation_config-res"></a>

**完成 RES 的单点登录设置**

1. 以**管理员或**集群**管理员**身份登录 RES。

1. 导航到 “**环境管理**” ⇒ **“常规设置” ⇒ “****身份提供者**”。  
![\[RES 中的环境设置用户界面，包括单点登录部分。\]](http://docs.aws.amazon.com/zh_cn/res/latest/ug/images/environment-settings.png)

1. 在 “**单点登录**” 下，选择状态指示器旁边的编辑图标以打开 “**单点登录配置**” 页面。  
![\[RES 中的单点登录配置用户界面。\]](http://docs.aws.amazon.com/zh_cn/res/latest/ug/images/sso-config.png)

   1. 对于**身份提供商**，请选择 **SAML**。

   1. 在提供**商名称**中，输入您的身份提供商的唯一名称。
**注意**  
不允许使用以下名称：  
Cognito
IdentityCenter

   1. 在 “**元数据文档来源**” 下，选择相应的选项并上传元数据 XML 文档或提供身份提供商提供的 URL。

   1. 在 “提供**商电子邮件属性”** 中，输入文本值`email`。

   1. 选择**提交**。

1. 重新加载**环境设置**页面。如果配置正确，则启用单点登录。

## 在非生产环境中配置您的身份提供商
<a name="configure-id-federation-demo-env"></a>

如果您使用提供的[外部资源](prerequisites.md#external-resources)创建了非生产 RES 环境，并将 IAM Identity Center 配置为身份提供商，则可能需要配置其他身份提供商，例如 Okta。RES SSO 启用表单要求提供三个配置参数：

1. 提供商名称-无法修改

1. 元数据文档或 URL-可以修改

1. 提供商电子邮件属性-可以修改

**要修改元数据文档和提供者电子邮件属性，请执行以下操作：**

1.  转到 Amazon Cognito 控制台。

1. 从导航栏中选择 “**用户池**”。

1. 选择您的用户池以查看**用户池概述**。

1. 在**登录体验**选项卡中，前往**联合身份提供商登录，然后打开您配置的身份提供商**。

1. 通常，您只需要更改元数据并保持属性映射不变。要更新**属性映射**，请选择**编辑**。要更新**元数据文档**，请选择**替换元数据**。  
![\[Amazon Cognito 用户池概述。\]](http://docs.aws.amazon.com/zh_cn/res/latest/ug/images/res-attributemetadata.png)

1. 如果您编辑了属性映射，则需要在 DynamoDB 中更新`<environment name>.cluster-settings`表。

   1. 打开 DynamoDB 控制台，然后从导航栏中**选择 “表”**。

   1. 查找并选择`<environment name>.cluster-settings`表格，然后从 “**操作**” 菜单中选择 “**浏览项目**”。

   1. 在 “**扫描或查询项目**” 下，转至 “**筛选**” 并输入以下参数：
      + **属性名称** — `key`
      + **价值** — `identity-provider.cognito.sso_idp_provider_email_attribute`

   1. 选择**运行**。

1. 在 “**已退回的商品**” 下，找到该`identity-provider.cognito.sso_idp_provider_email_attribute`字符串并选择 “**编辑”**，修改字符串以匹配您在 Amazon Cognito 中所做的更改。  
![\[Amazon Cognito 更新了 DynamoDB 中返回的筛选条件和项目。\]](http://docs.aws.amazon.com/zh_cn/res/latest/ug/images/res-scanqueryitems.png)

## 调试 SAML IdP 问题
<a name="configure-id-federation_debug"></a>

**SAML-tracer** — 你可以在 Chrome 浏览器中使用这个扩展程序来跟踪 SAML 请求并检查 SAML 断言值。如需了解更多信息，请参阅 Chrome [网上应用店中的 SAML-Tracer](https://chromewebstore.google.com/detail/saml-tracer/mpdajninpobndbfcldcmbpnnbhibjmch?pli=1)。

**SAML 开发人员工具** — OneLogin 提供可用于解码 SAML 编码值和检查 SAML 断言中必填字段的工具。有关更多信息，请参阅 OneLogin 网站上的 [Base 64 Decode \$1 Inflate](https://www.samltool.com/decode.php)。

**Amazon CloudWatch 日志** — 您可以在 “日志” 中查看 RES CloudWatch 日志中是否有错误或警告。您的日志位于名称格式为的日志组中`/res-environment-name/cluster-manager`。

**Amazon Cognito 文档** *— 有关 SAML 与 Amazon Cognito 集成的更多信息，请参阅《亚马逊 Cognito 开发者指南[》中的将 SAML 身份提供商添加到](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-saml-idp.html)用户池。*