使用者集區大小寫區分 - Amazon Cognito

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

使用者集區大小寫區分

依預設,您在中建立的 Amazon Cognito 使用者集區不區分大小寫。 AWS Management Console 當使用者集區不區分大小寫時,user@example.comUser@example.com 是指同一名使用者。當使用者集區的使用者名稱不區分大小寫時,preferred_usernameemail 屬性也不會區分大小寫。

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

注意

無論使用者集區的區分大小寫設定如何,Amazon Cognito 都會要求來自 SAML 或 OIDC 身分提供者 (IdP) 的聯合身分使用者傳遞唯一且區分大小寫的 NameIdsub 宣告。如需唯一識別碼區分大小寫和 SAML 的詳細資訊 IdPs,請參閱使用 SP 啟動式 SAML 登入

建立區分大小寫的使用者集區

如果您使用 AWS Command Line Interface (AWS CLI) 和 API 作業 (例如) 建立資源 CreateUserPool,則必須將布林CaseSensitive參數設定為false。此設定會建立不區分大小寫的使用者集區。如果您不指定值,CaseSensitive 會預設為 true。此預設與您在 AWS Management Console中建立之使用者集區的預設行為相反。在 2020 年 2 月 12 日之前,無論平台為何,使用者集區皆預設為區分大小寫。

您可以使用 AWS Management Console 或 DescribeUserPoolAPI 作業的 [登入體驗] 索引標籤,檢閱帳戶中每個使用者集區的區分大小寫設定。

遷移至新的使用者集區

由於使用者描述檔之間的潛在衝突,您無法將 Amazon Cognito 使用者集區從區分大小寫變成不區分大小寫。替代方法為將您的使用者遷移到新的使用者集區。您必須建置遷移代碼以解決與大小寫相關的衝突。此代碼必須傳回唯一的新使用者,或者在偵測到衝突時拒絕登入嘗試。在新的不區分大小寫的使用者集區中,指派一個 遷移使用者 Lambda 觸發程序。該 AWS Lambda 功能可以在新的不區分大小寫的用戶池中創建用戶。當使用者無法成功登入不區分大小寫的使用者集區時,Lambda 函數會從區分大小寫的使用者集區中查找並複製使用者。您也可以在事件上啟動遷移使用者 Lambda ForgotPassword觸發器。Amazon Cognito 會將登入或密碼恢復動作中的使用者資訊和事件中繼資料傳遞至您的 Lambda 函數。當函數在不區分大小寫的使用者集區中建立新使用者時,您可以使用事件資料來管理使用者名稱與電子郵件地址之間的衝突。這些衝突發生於使用者名稱和電子郵件地址在不區分大小寫的使用者集區中是唯一的,但在區分大小寫的使用者集區中是相同的。

如需有關如何在 Amazon Cognito 使用者集區之間使用遷移使用者 Lambda 觸發器的詳細資訊,請參閱部落格中的將使用者遷移至 Amazon Cognito 使用者集區。 AWS