הפעלה, השבתה ושימוש במדיניות סיסמאות
במאמר הזה מוסבר איך להגדיר כללי מדיניות לסיסמאות כדי לשפר את חוזק הסיסמה של משתמשים חדשים וקיימים.
כדי להגדיר מדיניות סיסמאות ממסוף Firebase, קראו את המאמר הגדרת מדיניות סיסמאות.
סקירה כללית
מדיניות סיסמאות מאפשרת לשפר את אבטחת החשבון על ידי אכיפת דרישות מורכבות לסיסמאות. כללי המדיניות בנושא סיסמאות תומכים בדרישות הבאות:
- חובה להשתמש באות קטנה
- חובה להשתמש באות רישית
- חובה להשתמש בספרה
- נדרש תו שאינו אלפאנומרי
- אורך הסיסמה המינימלי (טווח של 6 עד 30 תווים, ברירת המחדל היא 6)
- אורך הסיסמה המקסימלי (עד 4,096 תווים)
התווים הבאים עומדים בדרישה לתווים שאינם אלפאנומריים, אם הם מוגדרים:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ `
מצבי האכיפה
אפשר להפעיל את אכיפת מדיניות הסיסמאות בשני מצבים:
- דרישה: ניסיונות ההרשמה נכשלים עד שהמשתמש מעדכן לסיסמה שעומדת בדרישות המדיניות.
התראה: המשתמשים יכולים להירשם עם סיסמה שלא עומדת בדרישות. אם חסרים קריטריונים שנדרשים כדי לעמוד בדרישות המדיניות, הם יוחזרו. הקריטריונים שמוחזרים כוללים:
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 (הגדרות אימות).
לוחצים על הכרטיסייה מדיניות סיסמאות.
מגדירים את הדרישות שנבחרו לגבי חוזק הסיסמה.
בוחרים את מצב האכיפה (דרישה או הודעה) ואם לאלץ שדרוגי סיסמאות בכניסה.
לוחצים על Save.
REST
במסוף Google Cloud , מדפיסים אסימון גישה למזהה הפרויקט באמצעות הפקודה
gcloud auth print-access-token: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: מזהה הפרויקט -
MIN_PASSWORD_LENGTH: אורך הסיסמה המינימלי הנדרש -
MAX_PASSWORD_LENGTH: האורך המקסימלי הנדרש של הסיסמה
-
כדי לאכוף מדיניות סיסמאות ברמת הדייר, מבצעים את השלבים הבאים:
REST
במסוף Google Cloud , מדפיסים אסימון גישה למזהה הפרויקט באמצעות הפקודה
gcloud auth print-access-token: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: מזהה הפרויקט TENANT_ID: מזהה הדייר שבו רוצים לאכוף את מדיניות הסיסמאות-
MIN_PASSWORD_LENGTH: אורך הסיסמה המינימלי הנדרש -
MAX_PASSWORD_LENGTH: האורך המקסימלי הנדרש של הסיסמה
-
השבתת האכיפה
כדי להשבית את אכיפת מדיניות הסיסמאות ברמת הפרויקט:
מסוף Firebase
במסוף Firebase, נכנסים לדף Authentication Settings (הגדרות אימות).
לוחצים על הכרטיסייה מדיניות סיסמאות.
להשבית את האכיפה של מדיניות הסיסמאות.
לוחצים על Save.
REST
במסוף Google Cloud , מדפיסים אסימון גישה למזהה הפרויקט באמצעות הפקודה
gcloud auth print-access-token: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: מזהה הפרויקט
-
כדי להשבית את האכיפה של מדיניות הסיסמאות ברמת הדייר, פועלים לפי השלבים הבאים:
REST
במסוף Google Cloud , מדפיסים אסימון גישה למזהה הפרויקט באמצעות הפקודה
gcloud auth print-access-token: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: מזהה הפרויקט -
TENANT_ID: מזהה הדייר שבו רוצים להשבית את מדיניות הסיסמאות
-
אכיפה בצד הלקוח
אפשר לאמת סיסמאות מול מדיניות הסיסמאות של הפרויקט או של דייר (tenant) בצד הלקוח לפני השליחה.
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.