

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

# Amazon Cognito 使用者集區
<a name="cognito-user-pools"></a>

Amazon Cognito 使用者集區是用於網路和行動應用程式身份驗證和授權的使用者目錄。從您的應用程式角度來看，Amazon Cognito 使用者集區是 OpenID Connect (OIDC) 身分提供者 (IdP)。使用者集區為安全性、聯合身分、應用程式整合和自訂使用者體驗新增額外的功能層。

例如，您可以驗證使用者的工作階段來自信任的來源。您可以將 Amazon Cognito 目錄與外部身分提供者結合使用。使用您偏好的 AWS SDK，您可以選擇最適合您應用程式的 API 授權模型。此外，您還可以新增 AWS Lambda 函數，修改或徹底改造 Amazon Cognito 的預設行為。

![具有使用者集區如何運作之高階概觀的圖表。用戶端可以使用 SDK AWS 或使用者集區內建的 OIDC IdP 登入應用程式建置。使用者集區也會統一多個社交、OpenID Connect 和 SAML 2.0 身分提供者的登入程序。](http://docs.aws.amazon.com/zh_tw/cognito/latest/developerguide/images/scenario-authentication-cup.png)


**Topics**
+ [功能](#cognito-user-pools-features)
+ [使用者集區功能計劃](cognito-sign-in-feature-plans.md)
+ [Amazon Cognito 使用者集區的安全最佳實務](user-pool-security-best-practices.md)
+ [使用 Amazon Cognito 使用者集區進行身分驗證](authentication.md)
+ [使用第三方身分提供者登入使用者集區](cognito-user-pools-identity-federation.md)
+ [使用者集區受管登入](cognito-user-pools-managed-login.md)
+ [使用 Lambda 觸發程序來自訂使用者集區工作流程](cognito-user-pools-working-with-lambda-triggers.md)
+ [管理使用者集區中的使用者](managing-users.md)
+ [了解使用者集區 JSON Web 字符 JWTs)](amazon-cognito-user-pools-using-tokens-with-identity-providers.md)
+ [成功登入後存取資源](accessing-resources.md)
+ [範圍、M2M 和資源伺服器](cognito-user-pools-define-resource-servers.md)
+ [設定使用者集區功能](user-pools-configure-features.md)
+ [使用 Amazon Cognito 使用者集區安全性功能](managing-security.md)
+ [使用者集區端點和受管登入參考](cognito-userpools-server-contract-reference.md)

## 功能
<a name="cognito-user-pools-features"></a>

Amazon Cognito 使用者集區具有下列功能。

### 註冊
<a name="cognito-user-pools-sign-up"></a>

Amazon Cognito 使用者集區具有使用者驅動、管理員驅動和程式設計方法，將使用者設定檔新增至您的使用者集區。Amazon Cognito 使用者集區支援下列註冊模型。您可以在應用程式中任意組合使用模型。

**重要**  
如果您在使用者集區中啟用使用者註冊，則網際網路上的任何人都可以註冊帳戶並登入您的應用程式。除非您想要開放您的應用程式供公開註冊，否則請勿在使用者集區中啟用自助註冊。若要變更此設定，請在使用者集區主控台的**身分驗證**下的**註冊**功能表中更新**自助**註冊，或在 [ CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) 或 [ UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) API 請求中更新 [ AllowAdminCreateUserOnly](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUserConfigType.html#CognitoUserPools-Type-AdminCreateUserConfigType-AllowAdminCreateUserOnly) 的值。  
如需可在使用者集區中設定之安全功能的詳細資訊，請參閱 [使用 Amazon Cognito 使用者集區安全性功能](managing-security.md)。

1. 您的使用者可以在您的應用程式中輸入他們的資訊，並建立您使用者集區原生的使用者設定檔。您可以呼叫 API 註冊作業，在您的使用者集區中註冊使用者。您可以向任何人開啟這些註冊操作，也可以使用用戶端秘密或 AWS 登入資料進行授權。

1. 您可以將使用者重新導向至第三方 IdP，他們可以授權將其資訊傳遞給 Amazon Cognito。Amazon Cognito 會將 OIDC ID 權杖、OAuth 2.0 `userInfo` 資料和 SAML 2.0 宣告處理到使用者集區中的使用者設定檔中。您可以根據屬性映射規則控制想要 Amazon Cognito 接收的屬性。

1. 您可以跳過公開或聯合註冊，並根據自己的資料來源和結構描述建立使用者。直接在 Amazon Cognito 主控台或 API 中新增使用者。從 CSV 檔案匯入使用者。執行just-in-time AWS Lambda 函數，在現有目錄中查詢您的新使用者，並從現有資料填入其使用者設定檔。

使用者註冊後，您可以將他們新增至 Amazon Cognito 列於存取和 ID 權杖清單中的群組。當您將 ID 權杖傳遞至身分池時，您也可以將使用者集區群組連結至 IAM 角色。

**相關主題**
+ [管理使用者集區中的使用者](managing-users.md)
+ [了解 API、OIDC 和受管登入頁面身分驗證](authentication-flows-public-server-side.md#user-pools-API-operations)
+ [使用 AWS SDKs的 Amazon Cognito 身分提供者程式碼範例](service_code_examples_cognito-identity-provider.md)

### 登入
<a name="cognito-user-pools-sign-in"></a>

Amazon Cognito 可以是您應用程式的獨立使用者目錄和身分提供者 (IdP)。您的使用者可以使用 Amazon Cognito 託管的受管登入頁面登入，或透過 Amazon Cognito 使用者集區 API 使用自訂建置的使用者身分驗證服務登入。您自訂建置的前端後方的應用程式層可以使用數種方法中的任一種來授權後端請求，以確認合法請求。

使用者可以設定和簽署使用者名稱和密碼、通行金鑰，以及電子郵件和簡訊一次性密碼。您可以提供包含外部使用者目錄的合併登入、登入後的多重要素驗證 (MFA)、信任記住的裝置，以及您設計的自訂身分驗證流程。

若要使用外部目錄登入使用者 (選擇性地與 Amazon Cognito 內建的使用者目錄結合)，您可以新增下列整合功能。

1. 使用 OAuth 2.0 社交登入來登入和匯入客戶使用者資料。Amazon Cognito 支援透過 OAuth 2.0 登入 Google、Facebook、Amazon 和Apple。

1. 使用 SAML 和 OIDC 登入來登入和匯入工作和學校使用者資料。您也可以設定 Amazon Cognito 接受任何 SAML 或 OpenID Connect (OIDC) 身分提供者 (IdP) 的宣告。

1.  將外部使用者設定檔連結至原生使用者設定檔。連結的使用者可以使用第三方使用者身分登入，並接收您指派給內建目錄中使用者的存取權。

**相關主題**
+ [使用第三方身分提供者登入使用者集區](cognito-user-pools-identity-federation.md)
+ [將聯合身分使用者連結至現有的使用者描述檔](cognito-user-pools-identity-federation-consolidate-users.md)

**機器對機器授權**  
有些工作階段並不是人機互動。您可能需要一個服務帳戶，該帳戶可以通過自動化流程對 API 請求授權。若要使用 OAuth 2.0 範圍為機器對機器授權產生存取權杖，您可以新增產生[用戶端憑證授權](https://www.rfc-editor.org/rfc/rfc6749#section-4.4)的應用程式用戶端。

**相關主題**
+ [範圍、M2M 和資源伺服器](cognito-user-pools-define-resource-servers.md)

### 受管登入
<a name="cognito-user-pools-hosted-ui"></a>

當您不想建置使用者介面時，您可以向使用者提供自訂的受管登入頁面。受管登入是一組用於註冊、登入、多重要素驗證 (MFA) 和密碼重設的網頁。您可以將受管登入新增至現有網域，或在 AWS 子網域中使用字首識別符。

**相關主題**
+ [使用者集區受管登入](cognito-user-pools-managed-login.md)
+ [設定使用者集區網域](cognito-user-pools-assign-domain.md)

### 安全
<a name="cognito-user-pools-security"></a>

您的本機使用者可以透過簡訊或電子郵件訊息的代碼，或產生多重要素驗證 (MFA) 代碼的應用程式，提供額外的身分驗證因素。您可以建置機制來設定和處理應用程式中的 MFA，也可以讓受管登入進行管理。當您的使用者從受信任的裝置登入時，Amazon Cognito 使用者集區可以略過 MFA。

如果您不想一開始就要求用戶進行 MFA，您可以有條件地要求。透過自適應身分驗證，Amazon Cognito 可以偵測潛在的惡意活動，並要求您的使用者設定 MFA 或封鎖登入。

如果傳送至使用者集區的網路流量可能是惡意的，您可以監控它並使用 AWS WAF Web ACLs 採取行動。

**相關主題**
+ [將 MFA 新增到使用者集區](user-pool-settings-mfa.md)
+ [具有威脅防護的進階安全性](cognito-user-pool-settings-threat-protection.md)
+ [將 AWS WAF Web ACL 與使用者集區建立關聯](user-pool-waf.md)

### 自訂使用者體驗
<a name="cognito-user-pools-custom-user-experience"></a>

在使用者註冊、登入或設定檔更新的大部分階段，您都可以自訂 Amazon Cognito 處理請求的方式。使用 Lambda 觸發程序，您可以根據自訂條件修改 ID 權杖或拒絕註冊請求。您可以建立自己的自訂身分驗證流程。

您可以上傳自訂 CSS 和標誌，為您的使用者提供熟悉的外觀和風格。

**相關主題**
+ [使用 Lambda 觸發程序來自訂使用者集區工作流程](cognito-user-pools-working-with-lambda-triggers.md)
+ [自訂身分驗證挑戰 Lambda 觸發程序](user-pool-lambda-challenge.md)
+ [將品牌套用到受管登入頁面](managed-login-branding.md)

### 監控與分析
<a name="cognito-user-pools-monitoring-and-analytics"></a>

Amazon Cognito 使用者集區會記錄 API 請求，包括受管登入的請求 AWS CloudTrail。您可以在 Amazon CloudWatch Logs 中檢閱效能指標、使用 Lambda 觸發將自訂日誌推送至 CloudWatch、監控電子郵件和簡訊交付，以及在 Service Quotas 主控台中監控 API 請求磁碟區。

使用 Plus [功能計劃](cognito-sign-in-feature-plans.md)，您可以監控使用者身分驗證嘗試是否有自動化學習技術的入侵指標，並立即修復風險。這些進階安全功能也會將使用者活動記錄到您的使用者集區，也可以選擇性地記錄到 Amazon S3、CloudWatch Logs 或 Amazon Data Firehose。

您也可以將 API 請求中的裝置和工作階段資料記錄到 Amazon Pinpoint 廣告活動。使用 Amazon Pinpoint，您可以根據對使用者活動的分析，從應用程式傳送推播通知。

**相關主題**
+ [Amazon Cognito 登入 AWS CloudTrail](logging-using-cloudtrail.md)
+ [追蹤 CloudWatch 和 Service Quotas 中的配額和使用量](tracking-quotas-and-usage-in-cloud-watch-and-service-quotas.md)
+ [從 Amazon Cognito 使用者集區匯出日誌](exporting-quotas-and-usage.md)
+ [使用 Amazon Pinpoint 進行使用者集區分析](cognito-user-pools-pinpoint-integration.md)

### Amazon Cognito 身分池整合
<a name="cognito-user-pools-identity-pools-integration"></a>

Amazon Cognito 的另一半是身分池。身分集區提供憑證，授權和監控來自您使用者的 API 請求 AWS 服務，例如 Amazon DynamoDB 或 Amazon S3。您可以建立以身分為基礎的存取原則，根據您在使用者集區中對使用者進行分類的方式來保護您的資料。身分池也可以接受來自各種身分提供者的權杖和 SAML 2.0 宣告，而不受使用者集區驗證影響。

**相關主題**
+ [登入後 AWS 服務 使用身分集區存取](amazon-cognito-integrating-user-pools-with-identity-pools.md)
+ [Amazon Cognito 身分集區](cognito-identity.md)