

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

# 新增 SAML 2.0 身分提供者
<a name="tutorial-create-user-pool-saml-idp"></a>

您的應用程式使用者可以使用 SAML 2.0 身分提供者 (IdP) 登入。當您的客戶是組織的內部客戶或連結的企業時，您可以透過 IdPs 社交 IdP 選擇 SAML 2.0 IdPs。當社交 IdP 允許所有使用者註冊帳戶時，SAML IdP 更可能與組織控制的使用者目錄配對。無論您的使用者直接或透過第三方間接登入，所有使用者在使用者集區中都有設定檔。如果您不想新增透過 SAML 身分提供者，請略過此步驟。

如需詳細資訊，請參閱[搭配使用者集區使用 SAML 身分提供者](cognito-user-pools-saml-idp.md)。

您必須更新 SAML 身分提供者並設定您的使用者集區。如需有關如何將使用者集區新增為 SAML 2.0 身分提供者之依賴方或應用程式的資訊，請參閱 SAML 身分提供者的文件。

您還必須向 SAML 身分提供者提供聲明消費者服務 (ACS) 端點。在 SAML 身分提供者中為 SAML 2.0 POST 繫結設定使用者集區網域中的下列端點。如需使用者集區網域的詳細資訊，請參閱 [設定使用者集區網域](cognito-user-pools-assign-domain.md)。

```
https://Your user pool domain/saml2/idpresponse
With an Amazon Cognito domain:
https://<yourDomainPrefix>.auth.<region>.amazoncognito.com/saml2/idpresponse
With a custom domain:
https://Your custom domain/saml2/idpresponse
```

您可以在 [Amazon Cognito 主控台](https://console.aws.amazon.com/cognito/home)的網域選單中找到使用者集區的**網域**字首和區域值。

對於某些 SAML 身分提供者，您也需要提供服務提供者 (SP) `urn`，也稱為對象 URI 或 SP 實體 ID，格式為：

```
urn:amazon:cognito:sp:<yourUserPoolID>
```

您可以在 [Amazon Cognito 主控台](https://console.aws.amazon.com/cognito/home)的使用者集區的**概觀**儀表板中找到您的使用者集區 ID。

您也應配置 SAML 身分提供者，以為您的使用者集區中的任何必要屬性提供屬性值。通常 `email` 為使用者集區必要的屬性。此情況下，SAML 身分提供者應在 SAML 聲明中提供 `email` 值 (宣告)。

Amazon Cognito 使用者集區支援與 POST 繫結端點進行 SAML 2.0 聯合。這不需要您的應用程式擷取或剖析 SAML 聲明回應，因為使用者集區會透過使用者代理程式直接從您的身分提供者接收 SAML 回應。

**在您的使用者集區中配置 SAML 2.0 身分提供者**

1. 前往 [Amazon Cognito 主控台](https://console.aws.amazon.com/cognito/home)。如果出現提示，請輸入您的 AWS 登入資料。

1. 選擇 **User Pools** (使用者集區)。

1. 從清單中選擇現有的使用者集區，或[建立使用者集區](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html)。

1. 選擇**社交和外部供應商**選單。找到 **Federated sign-in** (聯合登入)，然後選取 **Add an identity provider** (新增身分提供者)。

1. 選擇 **SAML** 社交身分提供者。

1. 輸入以逗號分隔的 **Identifiers** (識別符)。識別符告知 Amazon Cognito 應該檢查使用者登入時輸入的電子郵件地址。然後，它會引導他們前往與其網域對應的提供者。

1. 如果您希望 Amazon Cognito 在使用者登出時傳送已簽署的登出請求給您的供應商，則請選擇 **Add sign-out flow** (新增登出流程)。您必須設定 SAML 2.0 身分提供者，將登出回應傳送至設定受管登入時建立的`https://<your Amazon Cognito domain>/saml2/logout`端點。`saml2/logout` 端點使用 POST 繫結。
**注意**  
如果選取此選項，且您的 SAML 身分提供者預期有簽署的登出請求，您也需要使用 SAML IdP 設定 Amazon Cognito 提供的簽署憑證。  
SAML IdP 會處理已簽署的登出請求，並將您的使用者從 Amazon Cognito 工作階段登出。

1. 選擇 **Metadata document source** (中繼資料文件來源)。如果您的身分提供者以公有 URL 提供 SAML 中繼資料，則可以選擇 **Metadata document URL (中繼資料文件 URL)**，然後輸入該公有 URL。否則，請選擇 **Upload metadata document** (上傳中繼資料文件)，然後選取您先前從供應商處下載的中繼資料檔案。
**注意**  
如果您的提供者有公有端點，而不是上傳檔案，建議您輸入中繼資料文件 URL。這可讓 Amazon Cognito 自動重新整理中繼資料。通常每 6 小時或是在中繼資料過期之前 (取較早的時間) 重新整理中繼資料。

1. 選擇 **Map attributes between your SAML provider and your app** (在 SAML 供應商與應用程式之間映射屬性)，將 SAML 供應商屬性映射至使用者集區中的使用者描述檔。在屬性映射中包含您的使用者集區必要屬性。

   例如，當您選擇 **User pool attribute** (使用者集區屬性) `email` 時，隨著身分提供者 SAML 聲明中顯示的 SAML 屬性名稱輸入 SAML 屬性名稱。您的身分提供者可能會提供範例 SAML 聲明以供參考。有些身分供應商會使用簡單的名稱，例如 `email`，而其他供應商則會使用 URL 格式的屬性名稱，例如下列範例：

   ```
   http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
   ```

1. 選擇**建立**。