本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用者集區大小寫區分
您在 中建立的 Amazon Cognito AWS Management Console 使用者集區預設為不區分大小寫。當使用者集區不區分大小寫時,user@example.com 和 User@example.com 是指同一名使用者。當使用者集區的使用者名稱不區分大小寫時,preferred_username
和 email
屬性也不會區分大小寫。
若要將使用者集區的大小寫區分設定納入考慮,應根據替代使用者屬性,在應用程式的程式碼中識別使用者。由於是使用者名稱、偏好的使用者名稱或電子郵件地址屬性在不同的使用者描述檔中可能會有所不同,因此請改為參閱 sub
屬性。您也可以在使用者集區中建立不可變的自訂屬性,並在每個新的使用者描述檔中,將自己的唯一識別符值指派給屬性。首次建立使用者時,您可以將值寫入您建立的不可變自訂屬性中。
注意
無論您的使用者集區的區分大小寫設定為何,Amazon Cognito 都要求來自 SAML或OIDC身分提供者 (IdP的聯合使用者傳遞唯一且區分大小寫NameId
或sub
宣告。如需唯一識別符大小寫敏感度和 的詳細資訊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 或 操作的登入體驗索引標籤來檢閱帳戶中每個使用者集區的案例敏感度設定。 DescribeUserPool API
- 遷移至新的使用者集區
-
由於使用者描述檔之間的潛在衝突,您無法將 Amazon Cognito 使用者集區從區分大小寫變成不區分大小寫。替代方法為將您的使用者遷移到新的使用者集區。您必須建置遷移代碼以解決與大小寫相關的衝突。此代碼必須傳回唯一的新使用者,或者在偵測到衝突時拒絕登入嘗試。在新的不區分大小寫的使用者集區中,指派一個 遷移使用者 Lambda 觸發程序。 AWS Lambda 函數可以在新的不區分大小寫的使用者集區中建立使用者。當使用者無法成功登入不區分大小寫的使用者集區時,Lambda 函數會從區分大小寫的使用者集區中查找並複製使用者。您也可以在ForgotPassword事件上啟用遷移使用者 Lambda 觸發程序。Amazon Cognito 會將登入或密碼恢復動作中的使用者資訊和事件中繼資料傳遞至您的 Lambda 函數。當函數在不區分大小寫的使用者集區中建立新使用者時,您可以使用事件資料來管理使用者名稱與電子郵件地址之間的衝突。這些衝突發生於使用者名稱和電子郵件地址在不區分大小寫的使用者集區中是唯一的,但在區分大小寫的使用者集區中是相同的。
如需如何在 Amazon Cognito 使用者集區之間使用遷移使用者 Lambda 觸發程序的詳細資訊,請參閱 AWS 部落格中的將使用者遷移至 Amazon Cognito 使用者集
區。