啟用、停用及使用密碼政策
本文說明如何設定密碼政策,提高新舊使用者的密碼強度。
如要透過 Firebase 控制台設定密碼政策,請參閱「設定密碼政策」。
總覽
你可以透過密碼政策強制規定密碼複雜度,提高帳戶安全性。密碼規則支援下列密碼規定:
- 須有小寫字元
- 須有大寫字元
- 必須包含數字字元
- 必須包含非英數字元
- 密碼長度下限 (6 到 30 個字元,預設為 6 個字元)
- 密碼長度上限 (最多 4096 個半形字元)
如果已設定,下列字元符合非英數字元規定:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ `
強制執行模式
您可以透過下列兩種模式強制執行密碼政策:
- 要求:使用者如未改用符合政策的密碼,就無法註冊。
通知:使用者能以不符合規定的密碼註冊,系統會傳回不符合的政策規定。傳回的條件包括:
MISSING_LOWERCASE_CHARACTERMISSING_UPPERCASE_CHARACTERMISSING_NUMERIC_CHARACTERMISSING_NON_ALPHANUMERIC_CHARACTERMINIMUM_PASSWORD_LENGTHMAXIMUM_PASSWORD_LENGTH
您可以將這項資訊傳送給使用者,請他們更新密碼。以下範例顯示包含缺少密碼條件的回應:
{ "kind": "identitytoolkit#VerifyPasswordResponse", "localId": "CJL1i2", "email": "cloudysanfrancisco@gmail.com", "displayName": "", "idToken": "ID_TOKEN", "registered": true, "userNotifications": [ { "notificationCode": "MISSING_NUMERIC_CHARACTER", "notificationMessage": "Password must contain a numeric character" }, { "notificationCode": "MISSING_NON_ALPHANUMERIC_CHARACTER", "notificationMessage": "Password must contain a non-alphanumeric character" } ] }
新使用者必須選擇符合政策的密碼。 如果您有活躍使用者,建議不要啟用「登入時強制升級」,除非您打算立即強制執行密碼政策。請改用通知模式,讓使用者以目前的密碼登入,並傳送通知,詳細說明密碼不符合哪些規定。
啟用強制執行功能時,請將 forceUpgradeOnSignin 設為 true,以便在必要模式中啟用強制執行功能。將其設為 false,即可在通知模式中啟用強制執行。
啟用違規處置功能
如要強制執行密碼政策,請按照下列步驟操作:
- 如果尚未設定,請設定電子郵件和密碼登入。
如要在專案層級強制執行密碼政策,請按照下列步驟操作:
Firebase 控制台
前往 Firebase 控制台的「Authentication Settings」(驗證設定) 頁面。
選取「密碼政策」分頁標籤。
設定所選密碼強度規定。
選擇強制執行模式 (「Require」或「Notify」),以及是否要在登入時強制升級密碼。
按一下 [儲存]。
REST
在 Google Cloud 主控台中,使用
gcloud auth print-access-token指令列印專案 ID 的存取權杖:gcloud auth print-access-token --project=PROJECT_ID使用 Identity Toolkit API 啟用密碼政策:
curl -X PATCH -d "{'passwordPolicyConfig':{'enforcementState':'ENFORCE','forceUpgradeOnSignin':true,'constraints':{'requireUppercase':true,'requireLowercase':true,'requireNonAlphanumeric':true,'requireNumeric':true,'minLength':MIN_PASSWORD_LENGTH,'maxLength':MAX_PASSWORD_LENGTH}}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=passwordPolicyConfig"更改下列內容:
ACCESS_TOKEN:您先前產生的存取權杖PROJECT_ID:專案 IDMIN_PASSWORD_LENGTH:密碼長度下限MAX_PASSWORD_LENGTH:密碼長度上限
如要在租戶層級強制執行密碼政策,請按照下列步驟操作:
REST
在 Google Cloud 主控台中,使用
gcloud auth print-access-token指令列印專案 ID 的存取權杖:gcloud auth print-access-token --project=PROJECT_ID使用 Identity Toolkit API 為租戶啟用密碼政策:
curl -X PATCH -d "{'passwordPolicyConfig':{'enforcementState':'ENFORCE','forceUpgradeOnSignin':true,'constraints':{'requireUppercase':true,'requireLowercase':true,'requireNonAlphanumeric':true,'requireNumeric':true,'minLength':MIN_PASSWORD_LENGTH,'maxLength':MAX_PASSWORD_LENGTH}}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/tenants/TENANT_ID?updateMask=passwordPolicyConfig"更改下列內容:
ACCESS_TOKEN:您先前產生的存取權杖PROJECT_ID:專案 IDTENANT_ID:要強制執行密碼政策的租戶 IDMIN_PASSWORD_LENGTH:密碼長度下限MAX_PASSWORD_LENGTH:密碼長度上限
停用強制執行功能
如要在專案層級停用密碼政策強制執行功能,請按照下列步驟操作:
Firebase 控制台
前往 Firebase 控制台的「Authentication Settings」(驗證設定) 頁面。
選取「密碼政策」分頁標籤。
停用密碼政策強制執行功能。
按一下 [儲存]。
REST
在 Google Cloud 主控台中,使用
gcloud auth print-access-token指令列印專案 ID 的存取權杖:gcloud auth print-access-token --project=PROJECT_ID使用 Identity Toolkit API 停用密碼政策強制執行功能:
curl -X PATCH -d "{'passwordPolicyConfig':{'enforcementState':'OFF'}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=passwordPolicyConfig"更改下列內容:
ACCESS_TOKEN:您先前產生的存取權杖PROJECT_ID:專案 ID
如要在租戶層級停用密碼政策強制執行功能,請按照下列步驟操作:
REST
在 Google Cloud 主控台中,使用
gcloud auth print-access-token指令列印專案 ID 的存取權杖:gcloud auth print-access-token --project=PROJECT_ID使用 Identity Toolkit API 為租戶停用密碼政策強制執行功能:
curl -X PATCH -d "{'passwordPolicyConfig':{'enforcementState':'OFF'}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/tenants/TENANT_ID?updateMask=passwordPolicyConfig"更改下列內容:
ACCESS_TOKEN:您先前產生的存取權杖PROJECT_ID:專案 IDTENANT_ID:要停用密碼政策的租戶 ID
在用戶端強制執行
密碼可以在提交前,先在用戶端根據專案或租戶的密碼政策進行驗證。
import { getAuth, validatePassword } from 'firebase/auth';
const auth = getAuth();
auth.tenantId = TENANT-ID;
const status = await validatePassword(auth, 'password').catch((error) => {
// Password couldn't be validated.
});
const policy = status.passwordPolicy;
// Use the status and policy to show what requirements are met and which are
// missing.