

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

# Amazon Cognito 身分集區入門
<a name="getting-started-with-identity-pools"></a>

透過 Amazon Cognito 身分集區，您可以為使用者建立唯一身分及指派許可。您的身分集區可以從下列類型的身分驗證服務引入身分：
+ Amazon Cognito 使用者集區中的使用者
+ 使用外部身分提供者 (例如 Facebook、Google、Apple 或 OIDC 或 SAML 身分提供者) 來驗證身分的使用者。
+ 透過您自己現有的驗證程序來驗證身分的使用者

使用者向供應商進行身分驗證並對身分集區提供授權後，就會取得臨時 AWS 登入資料。使用者的登入資料具有您為存取其他 而定義的許可 AWS 服務。

**Topics**
+ [在 Amazon Cognito 中建立身分集區](#create-identity-pool)
+ [設定 SDK](#install-the-mobile-or-javascript-sdk)
+ [整合身分提供者](#integrate-the-identity-providers)
+ [取得憑證](#get-credentials)
+ [身分集區的範例應用程式](getting-started-identity-pools-application.md)

## 在 Amazon Cognito 中建立身分集區
<a name="create-identity-pool"></a>

您可以透過 Amazon Cognito 主控台建立身分集區，或者您可以使用 AWS Command Line Interface (CLI) 或 Amazon Cognito API。下列程序是一般指南，可在 主控台中建立新的身分集區。您也可以[直接跳到 主控台](https://console.aws.amazon.com/cognito/v2/identity/identity-pools)，並遵循引導式體驗和內嵌說明內容。

**在主控台中建立新的身分集區**

1. 登入 [Amazon Cognito 主控台](https://console.aws.amazon.com/cognito/home)，然後選取 **身分池**。若要將許可指派給您的 IAM 主體，以便他們可以建立和管理 Amazon Cognito 資源，請參閱 [AWS Amazon Cognito 的 受管政策](security-iam-awsmanpol.md)。`AmazonCognitoPowerUser` 政策足以建立身分集區。

1. 選擇 **建立身分池**。

1. 在 **設定身分池信任** 中，為您的身分池選擇 **已驗證存取**、**訪客存取** 設定，或同時選擇。

   1. 如果您選擇 **已驗證存取**，請選取一或多個要設定為身分池中已驗證身分來源的 **身分類型**。如果您設定 **自訂開發人員提供者**，則建立身分池後無法修改或刪除。

1. 在 **設定許可** 中，為身分池中的身分驗證使用者或訪客使用者選擇預設 IAM 角色。

   1. 如果您希望 Amazon Cognito 為您建立具有基本許可和與身分池具有信任關係的新角色，請選擇 **建立新 IAM 角色**。輸入 **IAM 角色名稱** 以識別您的新角色，例如 `myidentitypool_authenticatedrole`。選取 **檢視政策文件** 以檢閱 Amazon Cognito 指派給您新 IAM 角色的許可。

   1. 如果您在 中已有要使用的角色 AWS 帳戶 ，您可以選擇使用**現有的 IAM** 角色。您必須設定 IAM 角色信任政策以包含 `cognito-identity.amazonaws.com`。將您的角色信任政策設定為僅在 Amazon Cognito 提供證據，表明請求來源為特定身分池中已驗證的使用者時，才允許 Amazon Cognito 擔任該角色。如需詳細資訊，請參閱[角色信任和許可](iam-roles.md#role-trust-and-permissions)。

1. 在 **連接身分提供者** 中，輸入您在 **設定身分池信任** 中選擇的身分提供者 (IdP) 詳細資料。系統可能會要求您提供 OAuth 應用程式用戶端資訊、選擇 Amazon Cognito 使用者集區、選擇 IAM IdP，或輸入開發人員供應商的自訂識別符。

   1. 為每個 IdP 選擇 **角色設定**。您可以為該 IdP 使用者指派設定 **已驗證角色** 時的 **預設角色**，或您可以 **選擇具有規則的角色**。使用 Amazon Cognito 使用者集區 IdP，您還可以 **選擇權杖中具有 preferred\_role 的角色**。如需 `cognito:preferred_role` 宣告的詳細資訊，請參閱 [指定優先順序值給群組](cognito-user-pools-user-groups.md#assigning-precedence-values-to-groups)。

      1. 如果您選擇 **使用規則選擇角色**，請輸入使用者身分驗證的 **宣告** 來源、比較宣告的 **操作員**、導致符合角色選擇的 **值**，以及當符合 **角色指派** 時您要指派的 **角色**。選取 **新增另一項** 以根據不同的條件建立其他規則。

      1. 選擇 **角色解析**。當您的使用者宣告與您的規則不符時，您可以拒絕憑證或向 **已驗證角色** 發出憑證。

   1. 為每個 IdP 分別設定 **存取控制屬性**。存取控制屬性會將使用者宣告映射至 Amazon Cognito 套用至其臨時工作階段的[委託人標籤](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_iam-tags.html)。您可以建立 IAM 政策，根據您套用至其工作階段的索引標籤篩選使用者存取權限。

      1. 若不套用主要索引標籤，請選擇 **非作用中**。

      1. 若要根據 `sub` 和 `aud` 宣告套用主要索引標籤，請選擇 **使用預設對應**。

      1. 若要建立您自己的自訂屬性結構描述至主要索引標籤，請選擇 **使用自訂對應**。然後，輸入您要從每個 **宣告** 中獲取的 **標籤金鑰**，顯示於索引標籤當中。

1. 在 **設定屬性** 中，在 **身分池名稱** 下輸入一個 **名稱**。

1. 在 **基本 (傳統) 身分驗證** 下，選擇是否要 **啟用基本流程**。當基本流程使用中時，您可以略過為 IdP 所做的角色選取，並直接呼叫 [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)。如需詳細資訊，請參閱[身分集區身分驗證流程](authentication-flow.md)。

1. 如果您要將 [標籤](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) 套用至身分池，請在索引 **標籤** 底下選擇 **新增標籤**。

1. 在 **檢閱和建立** 中，確認您為新身分池所做的選擇。選取 **編輯** 以返回精靈並變更任何設定。當您完成時，請選取 **建立身分池**。

## 設定 SDK
<a name="install-the-mobile-or-javascript-sdk"></a>

若要使用 Amazon Cognito 身分集區，請設定 適用於 Java 的 AWS SDK、 AWS Amplify或 適用於 .NET 的 SDK。如需詳細資訊，請參閱下列主題。
+ 在《適用於 JavaScript 的 AWS SDK 開發人員指南》中[為 JavaScript 設定 SDK](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-up.html)
+ 《Amplify 開發人員中心》中的 [Amplify 文件](https://docs.amplify.aws/)
+ 《適用於 .NET 的 SDK 開發人員指南》中的 [Amazon Cognito 憑證提供者](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/cognito-creds-provider.html)

## 整合身分提供者
<a name="integrate-the-identity-providers"></a>

Amazon Cognito 身分池 (聯合身分) 支援透過 Amazon Cognito 使用者集區、聯合身分提供者 (包括 Amazon、Facebook、Google、Apple 和 SAML 身分提供者) 以及未驗證的身分，進行使用者身分驗證。此功能也支援[開發人員驗證的身分](developer-authenticated-identities.md)，可讓您透過自己的後端身分驗證程序來註冊及驗證使用者。

若要進一步了解如何使用 Amazon Cognito 使用者集區來建立自己的使用者目錄，請參閱 [Amazon Cognito 使用者集區](cognito-user-pools.md)，以及 [登入後 AWS 服務 使用身分集區存取](amazon-cognito-integrating-user-pools-with-identity-pools.md)。

若要進一步了解如何使用外部身分供應商，請參閱[身分集區第三方身分提供者](external-identity-providers.md)。

若要進一步了解如何整合自己的後端身分驗證程序，請參閱[開發人員驗證的身分](developer-authenticated-identities.md)。

## 取得憑證
<a name="get-credentials"></a>

Amazon Cognito 身分集區為訪客 （未經驗證） 和已驗證並收到字符的使用者提供臨時 AWS 登入資料。透過這些 AWS 登入資料，您的應用程式可以透過 Amazon API Gateway AWS 安全地存取 內 AWS 外的後端。請參閱[取得憑證](getting-credentials.md)。