本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
透過使用者遷移 Lambda 觸發程序匯入使用者
有了此方法,當使用者首次使用您的應用程式登入或請求重設密碼時,您可以將使用者從現有使用者目錄無縫遷移至使用者集區。新增 遷移使用者 Lambda 觸發程序 功能到您的使用者集區,便會接收有關嘗試登入的使用者其相關中繼資料,並從外部身分來源傳回使用者描述檔資訊。如需此 Lambda 觸發程序範例程式碼的詳細資訊,包括請求和回應參數,請參閱遷移使用者 Lambda 觸發程序參數。
開始遷移使用者前,請在您的 AWS 帳戶帳戶中建立使用者遷移 Lambda 函數,並將 Lambda 函數設定為使用者集區中的使用者遷移觸發程序。向您的 Lambda 函數新增授權政策,該政策僅允許 Amazon Cognito 服務帳戶主體 cognito-idp.amazonaws.com
叫用 Lambda 函數,且僅在您自己的使用者集區內容中。如需詳細資訊,請參閱針對 AWS Lambda 使用以資源為基礎的政策 (Lambda 函數政策)。
登入程序
-
使用者會開啟您的應用程式,並使用 Amazon Cognito 使用者集區API或透過 Amazon Cognito 託管 UI 登入。如需如何協助使用 Amazon Cognito 登入的詳細資訊APIs,請參閱 將 Amazon Cognito 身分驗證和授權與 Web 和行動應用程式整合。
-
您的應用程式會將使用者名稱與密碼傳送到 Amazon Cognito。如果您的應用程式具有使用 建置的自訂登入使用者介面 AWS SDK,則應用程式必須使用 InitiateAuth或 AdminInitiateAuth搭配
USER_PASSWORD_AUTH
或ADMIN_USER_PASSWORD_AUTH
流程。當您的應用程式使用其中一個流程時, 會將密碼SDK傳送至伺服器。注意
在您新增使用者遷移觸發程序之前,請先啟用您應用程式用戶端設定中的
USER_PASSWORD_AUTH
或ADMIN_USER_PASSWORD_AUTH
。您必須使用這些流程,而不是預設的USER_SRP_AUTH
流程。Amazon Cognito 必須向您的 Lambda 函數傳送密碼,以便它能夠驗證您的使用者在其他目錄中的身分驗證。會遮蓋 Lambda SRP 函數的使用者密碼。 -
Amazon Cognito 會檢查提交的使用者名稱是否與使用者集區中的使用者名稱或別名相符。您可以將使用者的電子郵件地址、電話號碼或偏好的使用者名稱設定為使用者集區中的別名。如果使用者不存在,Amazon Cognito 會將包含使用者名稱和密碼的參數傳送到您的 遷移使用者 Lambda 觸發程序 函數。
-
您的 遷移使用者 Lambda 觸發程序 函數會使用現有的使用者目錄或使用者資料庫,來檢查使用者或驗證其身分。該函數會傳回 Amazon Cognito 存放在使用者集區中使用者描述檔的使用者屬性。只有在已提交的使用者名稱符合別名屬性時,您才能傳回
username
參數。如果您想要使用者繼續使用現有的密碼,您的函數會將 Lambda 回應中的屬性finalUserStatus
設定為CONFIRMED
。您的應用程式必須傳回在 遷移使用者 Lambda 觸發程序參數 顯示的所有"response"
參數。重要
請勿在使用者遷移 Lambda 程式碼中記錄整個請求事件物件。此請求事件物件包含使用者的密碼。如果您未對日誌進行消毒,密碼會顯示在 CloudWatch 日誌中。
-
Amazon Cognito 在您的使用者集區中建立使用者描述檔,並將字符傳回到您的應用程式用戶端。
-
您的應用程式會執行權杖擷取、接受使用者身分驗證,並繼續處理請求的內容。
遷移使用者後,請使用 USER_SRP_AUTH
登入。安全遠端密碼 (SRP) 通訊協定不會跨網路傳送密碼,並對您在遷移期間使用USER_PASSWORD_AUTH
的流程提供安全優勢。
如果在遷移期間發生錯誤,包括用戶端裝置或網路問題,您的應用程式會從 Amazon Cognito 使用者集區 收到錯誤回應API。發生這種情況時,Amazon Cognito 可能會或不會在您的使用者集區中建立使用者帳戶。然後,使用者應嘗試再次登入。如果重複發生登入失敗,請嘗試使用您應用程式的忘記密碼流程重設使用者密碼。
忘記密碼流程還會叫用您的 遷移使用者 Lambda 觸發程序 函數與 UserMigration_ForgotPassword
事件來源。由於使用者在請求重設密碼時未提交密碼,因此 Amazon Cognito 在傳送給 Lambda 函數的事件中不會包含密碼。您的函數只能查閱在現有使用者目錄中的使用者,並傳回屬性以新增至使用者集區中的使用者描述檔。當您的函數完成其調用並傳回其回應給 Amazon Cognito 後,您的使用者集區會透過電子郵件或 傳送密碼重設碼SMS。在應用程式中,提示您的使用者輸入確認碼和新密碼,然後在ConfirmForgotPasswordAPI請求中將該資訊傳送至 Amazon Cognito。您也可以使用 Amazon Cognito 託管 UI 中內建的頁面進行忘記密碼流程。