

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 為單一登入 (SSO) 設定您的身分提供者
<a name="configure-id-federation"></a>

Research and Engineering Studio 與任何 SAML 2.0 身分提供者整合，以驗證使用者對 RES 入口網站的存取。這些步驟提供與您選擇的 SAML 2.0 身分提供者整合的指示。如果您想要使用 IAM Identity Center，請參閱 [使用 IAM Identity Center 設定單一登入 (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 重新導向 URL** — IdP 用來傳送 SAML 2.0 回應給服務提供者的 URL。
**注意**  
根據 IdP，SAML 重新導向 URL 可能有不同的名稱：  
應用程式 URL
聲明消費者服務 (ACS) URL
ACS POST 繫結 URL

**若要取得 URL**

     1. 以**管理員**或 **clusteradmin** 身分登入 RES。

     1. 導覽至**環境管理** ⇒ **一般設定** ⇒ **身分提供者**。

     1. 選擇 **SAML 重新導向 URL**。
   + **SAML 對象 URI** — 服務提供者端 SAML 對象實體的唯一 ID。
**注意**  
根據 IdP，SAML 對象 URI 可能會有不同的名稱：  
ClientID
應用程式 SAML 對象
SP 實體 ID

     以下列格式提供輸入。

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

**尋找您的 SAML 對象 URI**

     1. 以**管理員**或 **clusteradmin** 身分登入 RES。

     1. 導覽至**環境管理** ⇒ **一般設定** ⇒ **身分提供者**。

     1. 選擇**使用者集區 ID**。

1. 張貼到 RES 的 SAML 聲明必須將下列欄位/宣告設定為使用者的電子郵件地址：
   + SAML 主體或 NameID
   + SAML 電子郵件

1. 您的 IdP 會根據組態，將欄位/宣告新增至 SAML 聲明。RES 需要這些欄位。根據預設，大多數供應商會自動填入這些欄位。如果您必須設定，請參閱下列欄位輸入和值。

   
   + **AudienceRestriction** — 設定為 `urn:amazon:cognito:sp:{{user-pool-id}}`。使用 Amazon Cognito 使用者集區的 ID 取代 {{user-pool-id}}。

     ```
     <saml:AudienceRestriction>
         <saml:Audience> urn:amazon:cognito:sp:{{user-pool-id}}
     </saml:AudienceRestriction>
     ```
   + **回應** — `InResponseTo`設定為 `https://{{user-pool-domain}}/saml2/idpresponse`。使用 Amazon Cognito 使用者集區的網域名稱取代 {{user-pool-domain}}。

     ```
     <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`。

**若要取得網域 URL**

   1. 以**管理員**或 **clusteradmin** 身分登入 RES。

   1. 導覽至**環境管理** ⇒ **一般設定** ⇒ **身分提供者**。

   1. 選擇**網域 URL**。

1. 如果您的 IdP 接受簽署憑證以與 Amazon Cognito 建立信任，請下載 Amazon 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_tw/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. 以**管理員**或 **clusteradmin** 身分登入 RES。

1. 導覽至**環境管理** ⇒ **一般設定** ⇒ **身分提供者**。  
![RES 中的環境設定使用者介面，包括單一登入的 區段。](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/environment-settings.png)

1. 在**單一登入**下，選擇狀態指示燈旁的編輯圖示，以開啟**單一登入組態**頁面。  
![RES 中的單一登入組態使用者介面。](http://docs.aws.amazon.com/zh_tw/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 CognitoUser 集區概觀。](http://docs.aws.amazon.com/zh_tw/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 CognitoUpdate DynamoDB 中傳回的篩選條件和項目。](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-scanqueryitems.png)

## 偵錯 SAML IdP 問題
<a name="configure-id-federation_debug"></a>

**SAML 追蹤器** — 您可以使用 Chrome 瀏覽器的此擴充功能來追蹤 SAML 請求並檢查 SAML 聲明值。如需詳細資訊，請參閱 Chrome Web Store 中的 [ SAML 追蹤器](https://chromewebstore.google.com/detail/saml-tracer/mpdajninpobndbfcldcmbpnnbhibjmch?pli=1)。

**SAML 開發人員工具** — OneLogin 提供可用於解碼 SAML 編碼值的工具，並檢查 SAML 聲明中的必要欄位。如需詳細資訊，請參閱 OneLogin [網站上的 Base 64 Decode \+ Inflate](https://www.samltool.com/decode.php)。

**Amazon CloudWatch Logs** — 您可以在 CloudWatch Logs 中檢查 RES 日誌是否有錯誤或警告。您的日誌位於名稱格式為 的日誌群組中`/{{res-environment-name}}/cluster-manager`。

**Amazon Cognito 文件** — 如需 SAML 與 Amazon Cognito 整合的詳細資訊，請參閱《*Amazon Cognito 開發人員指南*》中的[將 SAML 身分提供者新增至使用者集](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-saml-idp.html)區。