跳至主要內容

密碼政策 (Password Policy)

Logto 會根據密碼的建立或更新方式,以不同方式套用密碼政策:

設定密碼政策​

針對新使用者或更新密碼的使用者,你可以設定密碼政策以強制密碼強度要求。請前往 Console > 安全性 > 密碼政策 設定密碼政策。

  1. 最小密碼長度:設定密碼所需的最少字元數。(NIST 建議至少 8 個字元)
  2. 最少需包含的字元類型數:設定密碼需包含的最少字元類型數。可用的字元類型有:
    1. 大寫字母:(A-Z)
    2. 小寫字母:(a-z)
    3. 數字:(0-9)
    4. 特殊字元:(!"#$%&'()\*+,-./:;<>=?@[]^\_`|{}~ )
  3. 資料外洩歷史檢查:啟用此設定可拒絕曾在資料外洩事件中曝光過的密碼。(由 Have I Been Pwned 提供支援)
  4. 重複字元檢查:啟用此設定可拒絕包含重複字元的密碼。(例如 "11111111" 或 "password123")
  5. 使用者資訊檢查:啟用此設定可拒絕包含使用者資訊(如使用者名稱、電子郵件或電話號碼)的密碼。
  6. 自訂關鍵字:提供一組自訂(不區分大小寫)關鍵字,密碼中若包含將被拒絕。

密碼到期​

密碼到期會要求使用者在設定天數後重設密碼。你也可以手動讓特定使用者的密碼到期,例如當你知道密碼已外洩時。

此政策僅在使用者於密碼登入時輸入正確密碼後才會檢查。使用驗證碼、社交登入、單一登入 (SSO) 或通行密鑰登入的使用者不受影響。

啟用密碼到期​

前往 Console > 安全性 > 密碼政策,找到 密碼到期 (Password expiration) 卡片:

  1. 開啟 啟用密碼到期 (Enable password expiration)。
  2. 設定 密碼有效天數 (Password valid period, days),範圍為 1 至 9999 天。
  3. 儲存變更。

只要登入體驗中至少有一種 忘記密碼 方法(電子郵件或電話)且有可用連接器,開關才會啟用,因為使用者只能透過該流程重設過期密碼。基於同樣原因,啟用政策後,不能刪除最後一個支援忘記密碼的電子郵件或簡訊連接器。如果你的註冊流程不要求電子郵件或電話,部分使用者可能無法收到重設碼,建議在註冊時收集其中一項資訊。

Logto 會記錄使用者密碼最後設定或變更的時間。當密碼達到有效期限時,使用者下次密碼登入會被阻擋,直到重設密碼。沒有密碼變更紀錄的使用者,會從你啟用政策的時間開始計算,因此啟用政策不會讓所有人密碼同時過期。關閉再重新啟用政策會重設起始時間。

當使用者透過忘記密碼、Account API 或 Management API 設定新密碼時,密碼年齡會重設,任何手動到期也會清除。

手動讓使用者密碼到期​

啟用密碼到期政策後,你可以強制特定使用者在下次登入時重設密碼:

若未啟用政策,API 會回傳 400 並帶有錯誤碼 sign_in_experiences.password_expiration_not_enabled,Console 的 到期 (Expire) 按鈕也會停用。

常見情境如密碼已知外洩。讓密碼到期可要求使用者先以驗證碼證明擁有電子郵件或電話,才能設定新密碼並再次登入。如果你只想手動讓密碼到期,而不想強制所有使用者定期更換密碼,可將有效天數設為較長,例如 3650 天。

讓密碼到期不會讓使用者登出現有會話。若需立即切斷存取,請同時 撤銷使用者的有效會話 及 已授權的第三方應用程式。

終端使用者會看到什麼​

當使用者以過期密碼登入時,輸入正確密碼後,登入頁會顯示提示:「你的密碼已過期,必須重設後才能登入。」點擊 重設密碼 (Reset password) 會將使用者帶到忘記密碼流程,並自動帶入識別資訊。驗證電子郵件或電話收到的驗證碼並設定新密碼後,即可再次登入。

如果你用 Experience API 自行建構登入 UI,密碼驗證請求會以錯誤碼 password.expired(HTTP 422)失敗。請處理此錯誤,將使用者導向你的密碼重設流程。

密碼合規性檢查​

在 Logto 更新密碼政策後,現有使用者仍可用原密碼登入。只有新建立的帳號才會強制遵循新政策。

若需強化安全性,你可以使用 POST /api/sign-in-exp/default/check-password API 檢查使用者密碼是否符合預設登入體驗下的現行政策。若不符合,可透過自訂流程搭配 Account API 提示使用者更新密碼。

管理使用者 註冊與登入 透過 Account API 管理帳號設定 設計你的密碼政策