תאריך פרסום: 15 בינואר 2025
WebAuthn מספק יכולות ייחודיות כמו אינטראקציה עם Bluetooth לפרוטוקול ההיברידי, תקשורת עם ספקי מפתחות גישה והצעות למפתחות גישה במילוי אוטומטי. עם זאת, לקוחות ומאמתים שונים מציעים רמות תמיכה שונות בתכונות של WebAuthn. אי ההתאמה הזו עלולה להוביל לחוויית משתמש מקוטעת, שבה משתמשים מסוימים עשויים להיתקל בשגיאות או לא להיות מסוגלים להשתמש באפשרויות אימות מסוימות. היכולת של המפתחים לקבוע את יכולות הלקוח מאפשרת להם ליצור תהליכי אימות חזקים יותר שתואמים לוריאציות האלה.
השיטה PublicKeyCredential.getClientCapabilities()
מאפשרת לצדדים נסמכים לקבוע אילו תכונות של WebAuthn נתמכות בדפדפן. השיטה מחזירה הבטחה שמתקבלת ממנה רשימה של יכולות נתמכות, ומאפשרת למפתחים להתאים אישית את חוויות האימות ותהליכי העבודה על סמך היכולות הספציפיות של הלקוח.
תאימות
getClientCapabilities()
getClientCapabilities()
הוא ממשק API של WebAuthn שמאפשר לצדדים נסמכים לקבוע אילו יכולות זמינות. כדי להשתמש ב-API, צריך לבצע קריאה ל-PublicKeyCredential.getClientCapabilities()
. ההבטחה שמוחזרת מומרת לאובייקט שמכיל יכולות, וכל אחת מהן מציינת את הזמינות שלה באמצעות true
או false
. אם הערך של היכולת הוא undefined
, המשמעות היא שהזמינות שלה לא ידועה.
if (window.PublicKeyCredential &&
if (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
הדפדפן יכול ליצור פרטי כניסה ולאמת באמצעותם באמצעות מאמת פלטפורמה לאימות משתמשים או מכשיר אחר שתומך בכך באמצעות הפרוטוקול ההיברידי. שווה ערך ל-hybridTransport ||
userVerifyingPlatformAuthenticator
.
relatedOrigins
הדפדפן יכול ליצור פרטי כניסה ולאמת באמצעותם, גם אם הם לא תואמים למזהה ה-RP, כל עוד הם מצוינים בקובץ המקור הקשור.
signalAllAcceptedCredentials
הדפדפן יכול לשלוח לספק מפתחות הגישה אות על פרטי הכניסה הזמינים בשרת, כדי שספק מפתחות הגישה יוכל לשמור על עקביות בין רשימת מפתחות הגישה לבין השרת.
signalCurrentUserDetails
הדפדפן יכול לשלוח לספק מפתח הגישה נתוני משתמש, כמו שם המשתמש והשם המוצג בשרת, כדי שספק מפתח הגישה יוכל לשמור על עקביות בין נתוני מפתח הגישה שלו לבין נתוני מפתח הגישה בשרת.
signalUnknownCredential
הדפדפן יכול לשלוח אות לספק מפתח הגישה על פרטי כניסה שנמחקו מהשרת, כדי שספק מפתח הגישה יוכל לשמור על עקביות ברשימת מפתחות הגישה עם השרת.
userVerifyingPlatformAuthenticator
הדפדפן יכול ליצור פרטי כניסה ולאמת אותם באמצעות מאמת פלטפורמה. המשמעות היא לא שהדפדפן תומך בפרוטוקול המשולב.
הערך המקביל הקיים הוא PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()
.
תוספים
ספקי RP יכולים גם להשתמש ב-getClientCapabilities()
כדי לקבוע אילו תוספים זמינים.
if (capabilities['extension:appid'] === true) {
// appId extension is supported
}
המזהה מתחיל ב-extension:
ואחריו שם התוסף.
שמות התוספים מפורטים במזהי התוספים של WebAuthn שמוגדרים ב-IANA.
מידע נוסף
למידע נוסף על מפתחות גישה, אפשר לקרוא את המאמר כניסה ללא סיסמה באמצעות מפתחות גישה.