תמיכה באימות אוטומטי מחדש ב-FedCM

ב-FedCM יש תמיכה באימות אוטומטי מחדש ב-Chrome

Federated Credential Management API (FedCM) הוא ממשק API לאינטרנט שמיועד לאיחוד שירותי אימות הזהות תוך שמירה על פרטיות. באמצעות איחוד שירותי אימות הזהות, RP (צד נסמך) מסתמך על IdP (ספק זהויות) כדי לספק למשתמש חשבון בלי לדרוש שם משתמש וסיסמה חדשים.

FedCM מאפשר לדפדפן להבין את ההקשר שבו ה-RP וה-IdP מחליפים מידע. ההודעה נועדה ליידע את המשתמשים לגבי המידע ורמות ההרשאות שישותפו, ולמנוע ניצול לרעה לא מכוון. FedCM זמין ב-Chrome מגרסה 108.

בגרסה 115 של Chrome, ל-FedCM יש תמיכה באימות אוטומטי מחדש, שמשפר את חוויות המשתמש ומאפשר אימות מחדש לגורם מוגבל אחרי ההסכמה הראשונית.

אימות אוטומטי

נכון לעכשיו, אחרי שמשתמש יצר חשבון מאוחד ב-RP עם IdP באמצעות ה-API של FedCM, בפעם הבאה שהוא יבקר באתר הוא יצטרך לבצע את אותם השלבים בממשק המשתמש. כלומר המשתמש יצטרך לאשר מחדש, באופן מפורש וידני, את האימות מחדש ולהמשיך בתהליך הכניסה.

יש היגיון בחוויית המשתמש המפורשת לפני שהמשתמש יצר חשבון מאוחד כדי למנוע מעקב (שהוא אחד מהיעדים העיקריים של FedCM), אבל הוא מורכב שלא לצורך אחרי שהמשתמש עבר אותו פעם אחת: אחרי שהמשתמש מעניק הרשאה לאפשר תקשורת בין ה-RP ל-IdP, אין שום יתרון של פרטיות או אבטחה אם הוא אוכף מידע מפורש של משתמש אחר. לכן, אנחנו משיקים חוויית משתמש יעילה יותר שהגורמים מוגבלים יכולים לבחור עבור המשתמשים החוזרים שלהם.

FedCM אימות מחדש אוטומטי (קיצור של 'auto-reauthn') יכול לאפשר למשתמשים לבצע אימות מחדש באופן אוטומטי כשהם חוזרים אחרי האימות הראשוני באמצעות FedCM. המשמעות של 'האימות הראשוני' כאן הוא שהמשתמש יוצר חשבון או נכנס לאתר של הגורם המוגבל על ידי הקשה על הלחצן 'המשך בתור...' בתיבת הדו-שיח לכניסה של FedCM בפעם הראשונה, באותו מופע של הדפדפן.

תיבת דו-שיח שהמשתמש מקיש עליה כדי ליצור חשבון או כדי לבצע אימות.
תיבת דו-שיח שהמשתמש מקיש עליה כדי ליצור חשבון או לבצע אימות.

יש לבחור אפשרות לאימות מחדש אוטומטי

אנחנו משיקים אימות אוטומטי כדי לספק חוויית משתמש טובה יותר ולהתאים למפרט, אבל חוויית המשתמש שמוגדרת כברירת מחדל תהיה שונה ללא צורך בשינוי הקוד. כשהאימות מחדש האוטומטי זמין, ההתנהגות של הדפדפן משתנה בהתאם לאפשרות שבוחרים באפשרות mediation שהמפתחים מספקים עם navigator.credentials.get().

const cred = await navigator.credentials.get({
  identity: {
    providers: [{
      configURL: "https://idp.example/fedcm.json",
      clientId: "1234",
    }],
  },
  mediation: 'optional', // this is the default
});

mediation הוא מאפיין ב-API לניהול פרטי הכניסה, הוא מתנהג באותו אותו כמו עבור PasswordCredential ו-FederatedCredential, וגם הוא נתמך חלקית על ידי PublicKeyCredential. הנכס מקבל את ארבעת הערכים הבאים:

  • 'required': נדרש גישור כדי להמשיך, לדוגמה, לחיצה על הלחצן 'המשך' בממשק המשתמש. בחרו באפשרות הזו אם המשתמשים שלכם נדרשים להעניק הרשאה באופן מפורש בכל פעם שהם צריכים לעבור אימות.
  • 'optional'(ברירת מחדל): אימות מחדש אוטומטי אם ניתן, מחייב גישור אם לא. מומלץ לבחור באפשרות הזו בדף הכניסה.
  • 'silent': אימות מחדש אוטומטי אם אפשר, נכשל ברקע ללא צורך בגישור אם לא. מומלץ לבחור באפשרות זו בדפים אחרים מלבד דף הכניסה הייעודי, שבו רוצים להשאיר את המשתמשים מחוברים - לדוגמה, דף פריט באתר משלוחים או דף מאמר באתר חדשות.
  • 'conditional': משמש ל-WebAuthn ולא זמין ל-FedCM כרגע.

בשיחה הזו, האימות מחדש יתבצע בתנאים הבאים:

  • FedCM זמין לשימוש. לדוגמה, המשתמש לא השבית את FedCM באופן גלובלי או עבור ה-RP בהגדרות.
  • המשתמש השתמש רק בחשבון אחד ב-FedCM API כדי להיכנס לאתר בדפדפן הזה.
  • המשתמש נכנס ל-IdP עם החשבון הזה.
  • האימות מחדש לא בוצע ב-10 הדקות האחרונות.
  • הגורם המוגבל לא קרא ל-navigator.credentials.preventSilentAccess() אחרי הכניסה הקודמת.

כשהתנאים שלמעלה מתקיימים, ניסיון אימות מחדש של המשתמש יתחיל באופן אוטומטי מיד עם הפעלת navigator.credentials.get() של FedCM.

משתמש שמבצע אימות מחדש באופן אוטומטי באמצעות FedCM.

אכיפה של תהליך בחירת הרשת (Mediation) עם preventSilentAccess()

אימות אוטומטי מחדש של המשתמשים מיד אחרי שהם יוצאים מהחשבון לא יוצר חוויית משתמש טובה מאוד. לכן, ב-FedCM יש פרק זמן שקט של 10 דקות אחרי האימות האוטומטי, כדי למנוע התנהגות כזו. כלומר, אימות אוטומטי מתבצע לכל היותר פעם ב-10 דקות, אלא אם המשתמש נכנס שוב תוך 10 דקות. ה-RP צריך להפעיל את navigator.credentials.preventSilentAccess() כדי לבקש מהדפדפן להשבית אימות מחדש באופן אוטומטי כשמשתמש יוצא מה-RP באופן מפורש, לדוגמה, על ידי לחיצה על לחצן יציאה.

function signout() {
  navigator.credentials.preventSilentAccess();
  location.href = '/signout';
}

המשתמשים יכולים לבטל את ההסכמה לאימות מחדש אוטומטי בהגדרות

המשתמשים יכולים לבטל את ההסכמה לאימות מחדש אוטומטי מתפריט ההגדרות:

  • ב-Chrome במחשב, עוברים אל chrome://password-manager/settings > כניסה אוטומטית.
  • ב-Android Chrome, פותחים את הגדרות > מנהל הסיסמאות > מקישים על גלגל השיניים בפינה השמאלית העליונה > כניסה אוטומטית.

השבתת המתג מאפשרת למשתמש לבטל לגמרי את ההסכמה להתנהגות של אימות מחדש אוטומטי. ההגדרה הזו מאוחסנת ומסונכרנת בין מכשירים אם המשתמש נכנס לחשבון Google במופע של Chrome והסנכרון מופעל.

מתן משוב

אם אתם בודקים את FedCM, תוכלו לשתף את המשוב שלכם או בעיות שנתקלתם בהן בכתובת crbug.com בקטע "Blink>Identity>FedCM".

תמונה מאת Noah Samuel Franz ב-UnFlood