

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

# 使用者集區大小寫區分
<a name="user-pool-case-sensitivity"></a>

根據預設，您在 中建立的 Amazon Cognito AWS 管理主控台 使用者集區不區分大小寫。當使用者集區不區分大小寫時，*user@example.com* 和 *User@example.com* 是指同一名使用者。當使用者集區的使用者名稱不區分大小寫時，`preferred_username` 和 `email` 屬性也不會區分大小寫。

不敏感案例不僅適用於屬性輸入，也適用於輸出。不區分大小寫的使用者集區中的混合大小寫屬性值會在使用者集區文字輸出中扁平化為小寫。使用者集區文字輸出的範例包括 [userInfo](userinfo-endpoint.md) 回應、[GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html) 輸出等使用者查詢回應，以及 [Lambda 觸發的](cognito-user-pools-working-with-lambda-triggers.md)輸入事件。

若要將使用者集區的大小寫區分設定納入考慮，應根據替代使用者屬性，在應用程式的程式碼中識別使用者。由於是使用者名稱、偏好的使用者名稱或電子郵件地址屬性在不同的使用者描述檔中可能會有所不同，因此請改為參閱 `sub` 屬性。您也可以在使用者集區中建立不可變的自訂屬性，並在每個新的使用者描述檔中，將自己的唯一識別符值指派給屬性。首次建立使用者時，您可以將值寫入您建立的不可變自訂屬性中。

**注意**  
無論使用者集區的區分大小寫設定如何，Amazon Cognito 都會要求來自 SAML 或 OIDC 身分提供者 (IdP) 的聯合身分使用者傳遞唯一且區分大小寫的 `NameId` 或 `sub` 宣告。如需唯一識別符區分大小寫和 SAML IdP 的詳細資訊，請參閱 [實作 SP 初始化的 SAML 登入](cognito-user-pools-SAML-session-initiation.md#cognito-user-pools-saml-idp-authentication)。

建立區分大小寫的使用者集區  
如果您使用 [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) 等 AWS Command Line Interface (AWS CLI) 和 API 操作建立資源，則必須將布林值`CaseSensitive`參數設定為 `false`。此設定會建立不區分大小寫的使用者集區。如果您不指定值，`CaseSensitive` 會預設為 `true`。您在 Amazon Cognito 主控台中建立的使用者集區不區分大小寫。若要產生區分大小寫的使用者集區，您必須使用 `CreateUserPool`操作。在 2020 年 2 月 12 日之前，無論平台為何，使用者集區皆預設為區分大小寫。  
在 **的登入**選單和 [DescribeUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserPoolType.html#CognitoUserPools-Type-UserPoolType-UsernameConfiguration) 的 `UsernameConfiguration` 屬性中，您可以檢閱帳戶中每個使用者集區的區分大小寫設定。 AWS 管理主控台 

遷移至新的使用者集區  
由於使用者描述檔之間的潛在衝突，您無法將 Amazon Cognito 使用者集區從區分大小寫變成不區分大小寫。替代方法為將您的使用者遷移到新的使用者集區。您必須建置遷移代碼以解決與大小寫相關的衝突。此代碼必須傳回唯一的新使用者，或者在偵測到衝突時拒絕登入嘗試。在新的不區分大小寫的使用者集區中，指派一個 [遷移使用者 Lambda 觸發程序](user-pool-lambda-migrate-user.md)。 AWS Lambda 函數可以在不區分大小寫的新使用者集區中建立使用者。當使用者無法成功登入不區分大小寫的使用者集區時，Lambda 函數會從區分大小寫的使用者集區中查找並複製使用者。您還可以針對 [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html) 事件啟用遷移使用者 Lambda 觸發程序。Amazon Cognito 會將登入或密碼恢復動作中的使用者資訊和事件中繼資料傳遞至您的 Lambda 函數。當函數在不區分大小寫的使用者集區中建立新使用者時，您可以使用事件資料來管理使用者名稱與電子郵件地址之間的衝突。這些衝突會在區分大小寫的使用者集區中是唯一的使用者名稱和電子郵件地址之間發生，但在不區分大小寫的使用者集區中是相同的。  
如需如何在 Amazon Cognito 使用者集區之間使用遷移使用者 Lambda 觸發程序的詳細資訊，請參閱 AWS 部落格中的[將使用者遷移至 Amazon Cognito 使用者集區](https://aws.amazon.com/blogs/mobile/migrating-users-to-amazon-cognito-user-pools/)。