איך מונעים יצירה של מפתח גישה חדש אם כבר קיים מפתח גישה כזה

כדי למנוע יצירה של מפתח גישה חדש אם כבר קיים מפתח גישה באותו מפתח גישה ספק, צריך להשתמש במאפיין האופציונלי excludeCredentials של WebAuthn PublicKeyCredentialCreationOptions שלי.

המאפיין excludeCredentials הוא מערך תיאורים של מפתחות ציבוריים שכבר קיימים למשתמש מסוים. מידע זה סופק על ידי שרת relying party כשהוא רוצה למנוע יצירה של פרטי כניסה חדשים למשתמש קיים בדומיין מאמת אחד.

המערך excludeCredentials כולל את המאפיינים הבאים:

  • type: מחרוזת שמתארת את הסוג של פרטי הכניסה של המפתח הציבורי שיהיו שנוצר. ערך ברירת המחדל הוא 'public-key'.
  • id [מזהה]: ArrayBuffer שתואם לפרטי כניסה של מפתח ציבורי שכבר קיים מזהה (PublicKeyCredential.rawId). המזהה הזה נוצר במהלך היצירה של המכונה PublicKeyCredential.

הלקוח מחזיר שגיאה אם המשתמש מנסה ליצור פרטי כניסה חדשים בכלי לאימות פלטפורמה שכבר מכיל פרטי הכניסה שמפורטים בפרמטר הזה. אם מאמת החשבונות כבר מכיל פרטי כניסה למפתח ציבורי מהסוג הזה, המאמת אוסף את הסכמת המשתמשים בתור רגילה, ומראה למשתמש אינדיקטור הצלחה ללא פרטי כניסה חדשים. מוצגת חריגת InvalidStateError שמציינת שלמשתמש כבר יש פרטי כניסה תקפים תואמים מ-excludeCredentials.

"excludeCredentials": [
    {"id": "<id-1>", "type": "public-key"},
    {"id": "<id-2>", "type": "public-key"}
  ]

אפשר להשתמש ב-JSON הזה כדי למנוע ממאמתים באמצעות אחד מרישום מסוים יותר מפעם אחת. כל '<id-*>' צריך יאוכלסו במזהה של פרטי הכניסה שרוצים להחריג.

מידע נוסף על excludeCredentials זמין ב-W3C המלצה