פורסם: 19 באוגוסט 2025
WebAuthn immediate mediation היא יכולת חדשה באינטרנט שנועדה לייעל את תהליכי הכניסה של המשתמשים. בניסוי המקור הזה מוסבר על התכונה, היתרונות שלה ופרטי ההטמעה שלה. אנחנו מזמינים אתכם להשתתף בניסוי ולעזור לנו לעצב את העתיד של אימות באינטרנט.
רקע
תהליך האימות באינטרנט יוצר לעיתים חיכוך, ומסבך את הכניסה של המשתמשים לחשבון. תהליכי WebAuthn קיימים הם אמנם יעילים, אבל הם מתקשים עם לחצני 'כניסה', במיוחד כשפרטי הכניסה לא זמינים באופן מיידי, ולכן הם חוזרים לשימוש בטפסים רגילים.
התכונה החדשה הזו מציגה תהליך כניסה פשוט, בדומה לממשקי preferImmediatelyAvailableCredentials
API בנייד. הוא מפשט את תהליך הכניסה לחשבון, ולרוב מוצג לפני טפסי הכניסה הרגילים, וכך משפר את חוויית המשתמש.
איך זה עובד
התיווך המיידי של WebAuthn מאפשר חוויית כניסה ישירה ויעילה יותר. הוא מאפשר לדפדפן להציע באופן מיידי את פרטי הכניסה הזמינים, או לסמן באופן מיידי שהם לא קיימים בלי לבקש אימות במכשירים שונים או באמצעות מפתח אבטחה. כך המפתחים יכולים ליישם אותו בקלות.
סוג ה-Mediation immediate
אנחנו משיקים סוג חדש של תהליך בחירת רשת (Mediation) immediate
לבקשות navigator.credentials.get()
. אם האפשרות הזו מוגדרת, ההבטחה נדחית עם NotAllowedError
אם לא נמצאו פרטי כניסה שזמינים באופן מקומי. אם יש פרטי כניסה, הדפדפן מטפל בתהליך האימות כרגיל.
הגמישות הזו מאפשרת לאתרים להתאים את תהליך הכניסה שלהם, ולספק שיטות חלופיות בצורה חלקה כשפרטי הכניסה המיידיים לא זמינים.
חשוב לדעת שדפדפנים עדיין יכולים להחזיר NotAllowedError
כדי לשמור על הפרטיות והאבטחה של המשתמשים, וכך למנוע בעיות כמו טביעת אצבע או מעקב.
זיהוי תכונות
אפשר לזהות אם יש תיווך מיידי באמצעות PublicKeyCredential.getClientCapabilities()
. מפתחים יכולים לבדוק את היכולת immediateGet
באובייקט capabilities
שמוחזר.
async function checkImmediateMediationAvailability() {
try {
const capabilities = await PublicKeyCredential.getClientCapabilities();
if (capabilities.immediateGet && window.PasswordCredential) {
console.log("Immediate Mediation with passwords supported.");
} else if (capabilities.immediateGet) {
console.log("Immediate Mediation without passwords supported.");
} else { console.log("Immediate Mediation unsupported."); }
} catch (error) {
console.error("Error getting client capabilities:", error);
}
}
הערה: כדי לעזור בהרחבת התמיכה בדפדפנים, אפשר להשתמש ב-polyfill ל-getClientCapabilities()
שזמין במאגר WebAuthn Polyfills ב-GitHub.
דוגמה להטמעה
כדי להשתמש ב-API, מפעילים את navigator.credentials.get()
עם mediation:
'immediate'
. מומלץ לכלול את password: true
בבקשה, כי לרוב המשתמשים יש היום סיסמה שמורה והם יכולים ליהנות מהחוויה הזו באופן מיידי.
button.addEventListener('click', async (event) => {
event.preventDefault();
event.stopPropagation();
const cred = await navigator.credentials.get({
password: true,
publicKey: {
challenge, // Your server-generated challenge
rpId: 'example.com' // Your Relying Party ID
},
mediation: 'immediate',
});
});
המפתחים צריכים לטפל ב-NotAllowedError
בבלוק catch
כדי לספק חוויית כניסה חלקה במקרה של חזרה למצב הקודם.
תהליך מפורט לגישור מיידי
תיווך מיידי של WebAuthn תומך בשני תרחישי שימוש עיקריים שמפשטים את תהליך הכניסה של המשתמשים: הפעלת לחצן ייעודי 'כניסה באמצעות מפתח גישה' שמסתיר אפשרויות גיבוי לא רצויות, ושיפור תהליך הכניסה הדינמי שמציע אישורים באופן יזום לפני פעולה קריטית למשתמש.
תרחיש שימוש 1: כניסה מפורשת באמצעות לחצן כניסה
בתרחיש הזה מתמקדים בהצגת לחצן כניסה ייעודי, כדי להבטיח חוויית משתמש נקייה ללא הנחיות לא צפויות או מעבר לדף כניסה.
- המשתמש יוזם כניסה: המשתמש לוחץ על לחצן 'כניסה'. לאחר מכן, הצד המסתמך מתקשר אל
navigator.credentials.get()
באמצעותmediation: "immediate"
. - הנחיות בדפדפן לבחירת פרטי הכניסה (אם יש): הדפדפן בודק אם יש מפתחות גישה או סיסמאות שזמינים באופן מקומי. אם נמצאו חשבונות, מוצג למשתמש ממשק משתמש מודאלי כדי לבחור חשבון. החשבונות מדורגים לפי חותמת הזמן של השימוש האחרון, ואז לפי סדר אלפביתי. הערה: אם הדפדפן מוצא סיסמאות ומפתחות גישה מכמה מנהלי סיסמאות לאותו חשבון, הוא נותן עדיפות למפתחות הגישה. אם יש כמה מפתחות גישה לאותו חשבון מספקים שונים, מפתח הגישה האחרון שהשתמשתם בו מקבל עדיפות.
- התחברות מוצלחת: המשתמש בוחר את מפתח הגישה מממשק המשתמש של הדפדפן. אם הדפדפן דורש אימות, הוא יציג למשתמש בקשה לאמת את הזהות שלו באמצעות השיטה שהוגדרה קודם (למשל קוד אימות, נתונים ביומטריים או קו ביטול נעילה). הכניסה הושלמה בהצלחה.
- נתיב חלופי: אין מפתח גישה או שהמשתמש סגר את החלון: אם אין מפתחות גישה מקומיים או סיסמאות שהתבקשו לאתר, או אם המשתמש סגר את ממשק המשתמש של הדפדפן, הדפדפן ישלח
NotAllowedError
לצד המסתמך, ולא יוצג ממשק משתמש עם אפשרויות למפתחות אבטחה או למכשירים אחרים. אחרי כן, הצד המסתמך יכול להמשיך עם דף הכניסה הרגיל שלו או להציע מנגנוני אימות חלופיים.
תרחיש שימוש 2: תהליך כניסה מרומז לפני פעולת משתמש
במקרה כזה, חוויית הכניסה היא פרואקטיבית, ומציעה מפתחות גישה וסיסמאות לפני שהמשתמש מבצע פעולה שדורשת מצב מאומת, כמו מעבר לתשלום.
- המשתמש יוזם פעולה שדורשת כניסה לחשבון: המשתמש לוחץ על לחצן של פעולה שדורשת ממנו להיכנס לחשבון (למשל, לחצן 'תשלום'). הצד המסתמך קורא ל-
navigator.credentials.get()
עםmediation: "immediate"
. הנחיות בדפדפן לבחירת פרטי הכניסה (אם זמינות): הדפדפן בודק אם יש מפתחות גישה או סיסמאות שזמינים באופן מקומי. אם המערכת מוצאת חשבונות, היא מציגה מיד ממשק משתמש מודאלי שבו המשתמש יכול לבחור חשבון. החשבונות מדורגים לפי חותמת הזמן של השימוש האחרון, ואז לפי סדר אלפביתי. המערכת מסירה כפילויות כדי להציג רשומה אחת לכל חשבון. הערה: אם נמצאות סיסמאות ומפתחות גישה מאותו חשבון מכמה מנהלי סיסמאות, הדפדפן נותן עדיפות למפתחות הגישה. אם יש כמה מפתחות גישה לאותו חשבון מספקים שונים, המערכת נותנת עדיפות למפתח הגישה האחרון שהיה בשימוש.
התחברות מוצלחת: המשתמש בוחר פרטי כניסה מממשק המשתמש של הדפדפן. אם הדפדפן דורש אימות, הוא יציג למשתמש בקשה לאמת את הזהות שלו באמצעות השיטה שהוגדרה קודם (למשל קוד אימות, נתונים ביומטריים או קו ביטול נעילה). הכניסה הושלמה בהצלחה.
נתיב חלופי: אין פרטי כניסה או שהמשתמש סגר את ממשק המשתמש: אם אין פרטי כניסה מקומיים זמינים לאתר, או אם המשתמש סגר את ממשק המשתמש של הדפדפן, הדפדפן ישלח
NotAllowedError
לצד המסתמך, ולא יוצג ממשק משתמש. חוויית הכניסה של המשתמשים לא תשתנה מהיום. הצד המסתמך יכול לבקש מהמשתמש פרטים נוספים (לדוגמה, כתובת אימייל) או להציג מנגנוני אימות חלופיים, כמו טופס סיסמה, אימות באמצעות SMS או בקשה מודאלית של WebAuthn שתומכת באמצעי אימות חוצי-מכשירים.
יתרונות
לגישור מיידי של WebAuthn יש כמה יתרונות חשובים למפתחים ולמשתמשים:
- כניסה חלקה לחשבון: המשתמשים נהנים מחוויית כניסה חלקה יותר לחשבון, עם פחות חיכוך, אם יש להם מפתחות גישה או סיסמאות שזמינים באופן מיידי ושמורים בדפדפן או במנהל הסיסמאות שלהם.
- כניסה חכמה: ה-API מאפשר תהליך כניסה כשמשתמש רוצה לבצע פעולות שדורשות כניסה. ההגדרות האלה מותאמות באופן חכם לסטטוס של פרטי הכניסה של המשתמש. הוא מאפשר אימות מיידי כשזה אפשרי, וכך נמנעות הפניות מיותרות לכתובות אחרות והתהליך יעיל יותר.
- ניהול משופר של פרטי הכניסה: כשכמה מנהלי סיסמאות מציעים פרטי כניסה לאותו חשבון, הדפדפן בוחר בצורה חכמה את האפשרות המתאימה ביותר, וכך מפשט את ניהול פרטי הכניסה למשתמשים.
- פחות בלבול בקרב המשתמשים: התכונה מציגה את פרטי הכניסה המוכרים ישירות, וכך מצמצמת את הבלבול בקרב המשתמשים שקורה לעיתים קרובות כשיש כמה אפשרויות כניסה או טפסים רגילים.
- מעבר חלק לשיטה חלופית: המעבר החלק לשיטה חלופית מבטיח שמשתמשים שלא יצליחו להיכנס באמצעות אימות מיידי יוכלו להיכנס באמצעות דפי כניסה רגילים, כך שחוויית השימוש שלהם לא תשתנה מהתהליכים הנוכחיים.
פרטיות ואבטחה
התכונה 'גישור מיידי של WebAuthn' מאפשרת לאתרים לזהות את הנוכחות של פרטי כניסה שזמינים באופן מיידי לפני שהמשתמש מאשר באופן מפורש ניסיון כניסה. כדי להגן על פרטיות המשתמשים ולמנוע שימוש לרעה, אנחנו נוקטים כמה אמצעים חשובים:
- דרישה לפעולת משתמש: הקריאה ל-API מחייבת פעולת משתמש (כל הפעלה זמנית של המשתמש). כך קשה לאתרים לבצע בדיקות שקטות וטכניקות של טביעת אצבע דיגיטלית.
- סשנים פרטיים וסשנים במצב גלישה בסתר: בסשנים פרטיים או בסשנים במצב גלישה בסתר, כל בקשה מיידית לגישור תגרום לשגיאה
NotAllowedError
. - הגבלות על רשימות
allowCredentials
: בקשות באמצעות רשימותallowCredentials
מחזירות את השגיאהNotAllowedError
. כך האתרים לא יכולים להסיק את היסטוריית האינטראקציות של המשתמשים או לעקוב אחרי המשתמשים בסשנים שונים. - ביטול: אי אפשר להגדיר את הפרמטר
signal
בבקשה עם תהליך גישור מיידי. ההגדרה הזו מונעת מאתרים לסגור באופן אוטומטי כל ממשק משתמש בדפדפן.
רוצה לנסות?
מומלץ להתנסות בתיווך מיידי של WebAuthn.
סטטוס ב-Chrome
התכונה הזו נמצאת בתהליך הפיתוח של Chromium:
- מחשב: גרסת פיתוח לניסיון ב-Chrome 136, עם גרסת מקור לניסיון מ-Chrome 139 עד 141.
- Android: גרסת ניסיון למפתחים ב-Chrome 140.
לבדיקות מקומיות
כדי לבדוק באופן מקומי את תהליך בחירת הרשת (Mediation) המיידי של WebAuthn:
- הורדת Chrome 139: מורידים את הגרסה העדכנית של Chrome למחשב ופותחים אותה.
- מפעילים את התכונה הניסיונית 'גישור מיידי': מזינים
chrome://flags/#web-authentication-immediate-get
בסרגל הכתובות ומפעילים את התכונה הניסיונית 'Web Authentication Immediate Get'. - הכנת פרטי הכניסה: מוודאים שיש לכם מפתחות גישה וסיסמאות ששמרתם ושאפשר להשתמש בהם:
- סיסמאות שנשמרו במנהל הסיסמאות של Google.
- מפתחות גישה שנשמרו במנהל הסיסמאות של Google (נדרש להיכנס לחשבון Google ולסנכרן את Chrome עם החשבון), ב-Windows Hello או ב-iCloud Keychain.
לצורך בדיקה ציבורית (גרסת מקור לניסיון)
כדי לבדוק את תהליך בחירת הרשת המיידי של WebAuthn באמצעות גרסת המקור לניסיון בסביבה ציבורית:
- הרשמה: נכנסים לדף Chrome Origin Trials (גרסאות מקור לניסיון ב-Chrome) ונרשמים לניסיון של WebAuthn immediate mediation (גישור מיידי של WebAuthn).
- הוספת טוקן לכותרות HTTP: כוללים את הטוקן של תקופת הניסיון למקור בכותרות ה-HTTP של האתר:
HTML Origin-Trial: [YOUR_TRIAL_TOKEN]
הערה: אפשר גם לספק את האסימונים באופן פרוגרמטי באמצעות JavaScript.
תרחישי בדיקה
אנחנו מספקים הטמעה לדוגמה וממליצים לכם ליצור אב טיפוס משלכם כדי לבדוק תרחישים שונים.
- הדגמה של קובץ עזר: אפשר לנסות את הטמעת קובץ העזר בכתובת
https://deephand.github.io/webauthn-immediate-demo/
.- הטמעה של אב טיפוס: כשמטמיעים אב טיפוס באתר, צריך לוודא שהקריאה
navigator.credentials.get()
עםmediation: 'immediate'
מתבצעת אחרי שהמשתמש לוחץ (למשל על הלחצן 'כניסה' או על כל אינטראקציה שמחייבת את המשתמש להיות מחובר).
- הטמעה של אב טיפוס: כשמטמיעים אב טיפוס באתר, צריך לוודא שהקריאה
- תהליך 1: כניסה לחשבון ללא סיסמה או מפתח גישה: אם אין לכם מפתחות גישה או סיסמאות זמינות לאתר, לחיצה על 'כניסה' תוביל ישירות לדף הכניסה הרגיל, בלי שיופיע ממשק משתמש של הדפדפן.
- תהליך 2: כניסה באמצעות מפתח גישה מקומי שזמין באופן מיידי: אם יש לכם מפתח גישה ששמור באתר, לחיצה על 'כניסה' אמורה להפעיל את ממשק המשתמש של התיווך המיידי, ולהציע את מפתח הגישה לבחירה.
- תהליך 3: כניסה באמצעות סיסמה או מפתח גישה מקומיים: אם יש לכם סיסמאות ומפתחות גישה שמורים, צריך להפעיל את האפשרות 'בקשת סיסמה' (על ידי הגדרת
password: true
בקוד). אחרי לחיצה על 'כניסה', אמורות להופיע בממשק המשתמש של התיווך המיידי גם האפשרות של מפתח הגישה וגם האפשרות של הסיסמה.