זיהוי תכונות WebAuthn פשוט יותר

פורסם: 15 בינואר 2025, עדכון אחרון: 9 באפריל 2026

פרוטוקול WebAuthn מספק יכולות ייחודיות כמו אינטראקציה עם Bluetooth עבור פרוטוקול היברידי, תקשורת עם ספקי מפתחות גישה והצעת מפתחות גישה בהשלמה אוטומטית. עם זאת, לקוחות ומאמתים שונים מציעים רמות תמיכה שונות בתכונות של WebAuthn. הפער הזה עלול להוביל לחוויית משתמש מקוטעת, שבה חלק מהמשתמשים עלולים להיתקל בשגיאות או שלא יוכלו להשתמש באפשרויות אימות מסוימות. היכולת של מפתחים לקבוע את היכולות של הלקוח מאפשרת להם ליצור תהליכי אימות חזקים יותר שמותאמים לשינויים האלה.

ה-method‏ PublicKeyCredential.getClientCapabilities() מאפשר לצדדים מסתמכים לקבוע אילו תכונות של WebAuthn נתמכות בדפדפן. השיטה מחזירה אובייקט promise שמתבצע לרשימה של יכולות נתמכות, ומאפשרת למפתחים להתאים את תהליכי העבודה ואת חוויית האימות על סמך היכולות הספציפיות של הלקוח.

תאימות

Browser Support

  • Chrome: 133.
  • Edge: 133.
  • Firefox: 135.
  • Safari: 17.4.

Source

getClientCapabilities()

getClientCapabilities() הוא WebAuthn API שמאפשר לצדדים נסמכים לקבוע אילו יכולות זמינות. כדי להשתמש ב-API, צריך להפעיל את PublicKeyCredential.getClientCapabilities(). ההבטחה שמוחזרת נפתרת לאובייקט שמכיל יכולות, וכל אחת מהן מציינת את הזמינות שלה באמצעות true או false. אם היכולת היא undefined, יכול להיות שהזמינות שלה לא ידועה.

if (window.PublicKeyCredential && PublicKeyCredential.getClientCapabilities) {
  const capabilities = await PublicKeyCredential.getClientCapabilities();
  if (capabilities.conditionalGet === true &&
      capabilities.passkeyPlatformAuthenticator === true) {
    // The browser supports passkeys and the conditional mediation.
  }
}

conditionalCreate

הדפדפן יכול ליצור אישורים בלי ממשק משתמש מודאלי בולט אם המשתמש כבר הסכים ליצור אישורים.

conditionalGet

הדפדפן יכול לבצע אימות על ידי הצגת מפתחות גישה כחלק מתיבת דו-שיח של מילוי אוטומטי, במקום ממשק משתמש מודאלי בולט. הערך הקיים שווה ל-PublicKeyCredential.isConditionalMediationAvailable().

hybridTransport

המכשיר יכול להשתמש ב-Bluetooth כדי שהדפדפן יוכל ליצור אישור ולאמת אותו מקושר למכשיר אחר באמצעות פרוטוקול היברידי. בדרך כלל, המשמעות היא שהדפדפן יכול להציג קוד QR כדי שהמשתמש יוכל לסרוק אותו ולהיכנס לחשבון באמצעות טלפון שיש בו אישור.

passkeyPlatformAuthenticator

הדפדפן יכול ליצור פרטי כניסה ולאמת אותם באמצעות רכיב אימות (authenticator) פלטפורמה שמשתמש מאמת או מכשיר אחר שתומך בכך באמצעות פרוטוקול היברידי. שווה ערך ל-hybridTransport || userVerifyingPlatformAuthenticator.

relatedOrigins

הדפדפן יכול ליצור אישור ולבצע איתו אימות שלא תואם למזהה ה-RP, כל עוד הוא מצוין בקובץ המקורות הקשורים.

signalAllAcceptedCredentials

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

signalCurrentUserDetails

הדפדפן יכול לאותת לשרת מידע על המשתמש, כמו שם המשתמש והשם המוצג, לספק מפתח גישה, כדי שספק מפתח הגישה יוכל לשמור על עקביות בין פרטי מפתח הגישה לבין השרת.

signalUnknownCredential

הדפדפן יכול לאותת על פרטי כניסה שנמחקו בשרת לספק מפתחות הגישה, כדי שספק מפתחות הגישה יוכל לשמור על עקביות בין רשימת מפתחות הגישה לבין השרת.

userVerifyingPlatformAuthenticator

הדפדפן יכול ליצור אמצעי אימות ולאמת אותו באמצעות מאמת פלטפורמה. זה לא אומר שהדפדפן תומך בפרוטוקול ההיברידי. הערך הקיים שווה ל-PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable().

תוספים

בנוסף, בעלי RP יכולים לקבוע אילו תוספים זמינים באמצעות getClientCapabilities().

if (capabilities['extension:appid'] === true) {
  // appId extension is supported
}

המזהה מתחיל ב-extension: ואחריו שם התוסף. שמות התוספים מפורטים במזהי התוספים של WebAuthn שמוגדרים ב-IANA.

מידע נוסף

למידע נוסף על מפתחות גישה, אפשר לקרוא את המאמר כניסה ללא סיסמה באמצעות מפתחות גישה.