密碼、密碼復原和密碼政策 - Amazon Cognito

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

密碼、密碼復原和密碼政策

所有登入使用者集區的使用者,甚至是聯合使用者 ,都會將密碼指派給其使用者設定檔。本機使用者連結使用者在登入時必須提供密碼。聯合使用者不會使用使用者集區密碼,而是使用身分提供者 (IdP登入。您可以允許使用者重設自己的密碼、以管理員身分重設或變更密碼,以及設定密碼複雜性和歷史記錄的政策

Amazon Cognito 不會以純文字儲存使用者密碼。相反地,它會儲存每個使用者密碼的雜湊值與使用者特定的 salt。因此,您無法從使用者集區中的使用者設定檔擷取現有的密碼。最佳實務是,請勿將純文字使用者密碼存放在任何地方。當使用者忘記密碼時,請執行密碼重設。

密碼重設和復原

使用者忘記密碼。您可能希望他們能夠自行重設密碼,或者您可能想要要求管理員為其重設密碼。Amazon Cognito 使用者集區具有兩種模型的選項。本指南的此部分涵蓋使用者集區設定和密碼重設API的操作。

ForgotPassword API 操作和託管的 UI 選項忘記您的密碼? 會傳送程式碼給使用者,當他們確認擁有正確的程式碼時,讓他們有機會使用 設定新密碼ConfirmForgotPassword。這是自助式密碼復原模型。

AdminSetUserPasswordAdminResetUserPasswordAPI操作是管理員啟動的密碼重設方法。 AdminSetUserPassword會設定暫時或永久密碼,並以與 相同的方式AdminResetUserPassword傳送密碼重設碼給使用者ForgotPassword

AccountRecoverySetting 參數是使用者集區參數,可設定使用者呼叫 ForgotPassword 時可用來復原密碼的方法API。 會將復原碼ForgotPassword傳送至已驗證的電子郵件或已驗證的電話號碼。此復原代碼的有效期限為一小時。當您為使用者集區指定 AccountRecoverySetting 時,Amazon Cognito 會根據您設定的優先順序選擇代碼傳遞目的地。

當您定義 AccountRecoverySetting且使用者已SMSMFA設定 時, SMS無法用作帳戶復原機制。此設定的優先順序是以 1 為最高優先順序,依此類推。Cognito 只會將驗證傳送給其中一個指定方法。

例如,當系統管理員不希望使用者自行復原其帳戶,而要求其聯絡系統管理員為其重設帳戶時,就會使用 admin_only 的值。您無法搭配任何其他帳戶復原機制使用 admin_only

如果您未指定 AccountRecoverySetting,Amazon Cognito 會使用舊式機制來判斷密碼復原方法。在這種情況下,Cognito 會先使用經過驗證的手機。如果找不到該使用者的已驗證電話,Cognito 會退回,並接著使用已驗證的電子郵件。

使用者的偏好MFA方法會影響他們用來復原密碼的方法。偏好MFA使用電子郵件訊息的使用者無法透過電子郵件接收密碼重設碼。偏好的使用者MFA透過SMS訊息接收不到密碼重設碼SMS。

當使用者不符合您偏好的密碼重設方法時,您的密碼復原設定必須提供替代選項。例如,您的復原機制可能會將電子郵件作為第一優先,而電子郵件MFA可能是使用者集區中的一個選項。在此情況下,請新增 - SMS訊息帳戶復原做為第二個選項,或使用管理API操作來重設這些使用者的密碼。

如需 的詳細資訊AccountRecoverySetting,請參閱 Amazon Cognito Identity Provider 參考 UpdateUserPool 中的 CreateUserPool和 。 Amazon Cognito API

忘記密碼行為

在特定的小時內,我們允許使用者請求或輸入密碼重設碼 5 到 20 次嘗試,作為忘記密碼和 confirm-forgot-password動作的一部分。確切的值取決於與要求相關的風險參數。請注意,此行為可能會有所變更。

新增使用者集區密碼要求

強式、複雜的密碼是使用者集區的安全最佳實務。特別是在對網際網路開放的應用程式中,較弱的密碼可能會將使用者的登入資料暴露在猜測密碼並嘗試存取資料的系統中。密碼越複雜,就越難猜測。Amazon Cognito 為具有安全意識的管理員提供其他工具,例如進階安全功能AWS WAF Web ACLs,但您的密碼政策是使用者目錄安全的中心元素。

Amazon Cognito 使用者集區中本機使用者的密碼不會自動過期。最佳實務是在外部系統中記錄使用者密碼重設的時間、日期和中繼資料。使用密碼使用期的外部日誌,您的應用程式或 Lambda 觸發程序可以查詢使用者的密碼使用期,並在指定期間後需要重設。

您可以設定使用者集區,以要求符合您安全標準的最低密碼複雜性。複雜密碼的長度至少為八個字元。它們也包含大寫、數字和特殊字元的組合。

透過進階安全功能,您也可以設定密碼重複使用的政策。您可以防止使用者將其密碼重設為符合其目前密碼或最多 23 個其他先前密碼的新密碼,最多總共 24 個。

設定使用者集區密碼
  1. 建立使用者集區並導覽至設定安全性需求步驟,或存取現有的使用者集區並導覽至登入體驗索引標籤。

  2. 瀏覽至密碼政策

  3. 選擇一個密碼政策模式Cognito 預設會使用建議的最低設定值來設定您的使用者集區。您也可以選擇自訂密碼政策。

  4. 設定密碼長度下限。所有使用者都必須使用長度大於或等於此值的密碼來註冊或建立。您可以將此最小值設定為 99,但您的使用者最多可以設定 256 個字元的密碼。

  5. 密碼要求下設定密碼複雜性規則。選擇每個使用者密碼中至少要有一個的字元類型 (數字、特殊字元、大寫字母和小寫字母)。

    您可以在密碼中至少要求下列其中一個字元。在 Amazon Cognito 驗證密碼是否包含最少的必要字元之後,您使用者的密碼可以包含任何類型的額外字元,最長可達密碼長度上限。

    • 大小寫的基本拉丁語字母

    • 數字

    • 下列特殊字元。

      ^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ ` = + -
    • 非位於開頭及結尾的空格字元。

  6. 管理員設定的臨時密碼過期時間設定一個值。在此期限後,您在 Amazon Cognito 主控台或使用 AdminCreateUser 建立的新使用者將無法登入並設定新密碼。當他們用臨時密碼登入後,其使用者帳戶就永遠不會過期。若要更新 Amazon Cognito 使用者集區 中的密碼持續時間API,請在 CreateUserPoolUpdateUserPoolAPI請求TemporaryPasswordValidityDays 中設定 的值。

  7. 如果可用,請設定防止使用先前密碼 的值。若要使用此功能,請在使用者集區中啟用進階安全功能。此參數的值是使用者重設密碼時,無法比對新密碼的先前密碼數目。

若要重設過期使用者帳戶的存取權,請執行下列其中一項操作: