如何在 Amazon Cognito 中復原使用者密碼?

1 分的閱讀內容
0

我想要在 Amazon Cognito 中復原使用者密碼。

解決方案

可採用兩種方法在 Amazon Cognito 中復原使用者密碼:

  • 透過驗證的電子郵件或電話號碼。
  • 透過使用者密碼,透過管理員。

電子郵件或電話號碼驗證

您可以使用 ForgotPassword API 命令來復原使用者密碼。ForgotPassword API 命令會將復原程式碼傳送至驗證的電子郵件或驗證的電話號碼。復原程式碼的有效期為一小時。然後,使用 ConfirmForgotPassword API 命令來輸入重設密碼的確認碼。

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請確保您使用的是最新的 AWS CLI 版本

AWS CLI 命令:

ForgotPassword

aws cognito-idp forgot-password --client-id 38fjsnc484p94kpqsnet7mpld0 --username jane@example.com

輸出:

{
  "CodeDeliveryDetails": {
    "Destination": "j***@e***.com",
    "DeliveryMedium": "EMAIL",
    "AttributeName": "email"
  }
}

ConfirmForgotPassword

aws cognito-idp confirm-forgot-password --client-id 3n4b5urk1ft4fl3mg5e62d9ado --username=diego@example.com --password PASSWORD --confirmation-code CONF_CODE

**注意:**如果您同時滿足下列兩項要求,則必須在 CLI 命令中傳遞 --secret-hash:

  • AWS CLI 命令將 --client-id 做為參數。
  • 應用程式用戶端設定一個機密。

若要計算應用程式用戶端的密碼雜湊,請參閱[如何對 Amazon Cognito 使用者集區 API 的 "Unable to verify secret hash for client

"(無法驗證用戶端 <client-id> 的機密雜湊)錯誤進行疑難排解?](https://repost.aws/zh-Hant/knowledge-center/cognito-unable-to-verify-secret-hash)

管理員重設

**注意:**如果您不是管理員,則請聯絡您的管理員以完成下列動作。

當您呼叫 AdminResetUserPassword API 命令時,目前的密碼會失效,而且您必須加以變更。如果使用者在呼叫 API 命令後嘗試登入,應用程式會執行下列動作:

  • 重新取得 PasswordResetRequiredException
  • 引導使用者透過忘記密碼流程來重設密碼。

此外,如果出現以下情況,呼叫 API 會導致向使用者傳送帶有程式碼的訊息以變更其密碼:

  • 使用者集區已設定電話驗證,且
  • 使用者經驗證的電話號碼或電子郵件已存在。

AWS CLI 命令:

AdminResetUserPassword

aws cognito-idp admin-reset-user-password --user-pool-id us-west-2_aaaaaaaaa --username diego@example.com

ConfirmForgotPassword

aws cognito-idp confirm-forgot-password --client-id 3n4b5urk1ft4fl3mg5e62d9ado --username diego@example.com --password PASSWORD --confirmation-code CONF_CODE

AdminSetUserPassword

身為管理員,您還可以使用 AdminSetUserPassword API 命令,在使用者集區中呼叫使用者的密碼。密碼可以是暫時的,也可以是永久的。如果是暫時的,則使用者狀態會進入 FORCE_CHANGE_PASSWORD 狀態。當您登入後,InitiateAuth/AdminInitiateAuth 回應會包含 NEW_PASSWORD_REQUIRED 質詢。如果您沒有在密碼到期前登入,則無法登入,而且必須重設密碼。設定新密碼之後,或如果密碼為永久密碼,則使用者狀態會設定為 CONFIRMED (已確認)。

aws cognito-idp admin-set-user-password --user-pool-id us-west-2_aaaaaaaaa --username diego@example.com --password Hello@123 --permanent

AWS 官方
AWS 官方已更新 1 年前