עדכונים מ-FedCM: Domain Hint API

החל מגרסה 123 של Chrome, אפשר להשתמש בטיפים לדומיינים לצד Federated Credential Management API (FedCM). ב- Domain Hint API, מפתחים יכולים לספק חוויית משתמש טובה יותר רק שמציג את חשבונות ההתחברות המאוחדים מהדומיין שהם מקבלים.

ממשק API של Domain Hint

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

באמצעות Domain Hint API, ספקי RP יכולים לציין נכס domainHint ב-FedCM API קריאה להציג רק חשבונות שתואמים למשתמש. ה-IdP יכול לספק הנכס domain_hints כחלק מתשובה מרשימת החשבונות נקודת קצה ל- לציין לאילו דומיינים משויך החשבון. כך הדפדפן יכול להציג את החשבונות התואמים בלי לחשוף את הרמז לדומיין המבוקש ה-IdP.

תגובת JSON לדוגמה מנקודת הקצה של רשימת החשבונות תיראה כך הבאים:

{
 "accounts": [{
   "id": "1234",
   "given_name": "John",
   "name": "John Doe",
   "email": "john_doe@idp.example",
   "picture": "https://idp.example/profile/123",
   "approved_clients": ["123", "456", "789"],
  }, {
   "id": "5678",
   "given_name": "Johnny",
   "name": "Johnny",
   "email": "johnny@idp.example",
   "picture": "https://idp.example/profile/456"
   "approved_clients": ["abc", "def", "ghi"],
   "domain_hints": ["corp.example"]
  }]
}

הגורם המוגבל (RP) יכול לבצע קריאה אל navigator.credentials.get() עם נכס domainHint כדי לסנן את החשבונות. לדוגמה, נניח שמשתמש מבקר בכתובת corp-partner.example נכנס באמצעות חשבון מ-corp.example. האתר יפעיל את ה-API בתור ככה:

return await navigator.credentials.get({
  identity: {
    providers: [{
      configURL: "https://idp.example/manifest.json",
      clientId: "abc",
      nonce: nonce,
      domainHint : "corp.example"
    }]
  }
});

הערך domainHint לא נשלח לרשימת החשבונות נקודת קצה לסינון בצד השרת, כי זה יכול להיות וקטור של טביעת אצבע דיגיטלית ל-IdP. במקום זאת, Chrome מבצע בקשת FedCM כרגיל ומסנן את החשבונות שלא תואמים לערך של domainHint שצוין שיחת navigator.credentials.get(). לאחר מכן, Chrome מציג את תיבת הדו-שיח FedCM משתמש עם רשימת החשבונות החדשה. הגישה הזו דומה לרמז להתחברות API, אבל שני הדברים האלה ממשקי API עונים על שאלות שונות. המטרה של Login Hint API היא לענות על את המזהה של המשתמש שאני רוצה?", בעוד ש-Domain Hint נועד לענות על תאגיד או שרת שייכים לחשבון זה?".

כשנעשה שימוש ב-domainHint: "any", Chrome מסנן חשבונות שאין להם כל הדומיינים (כלומר, domain_hints לא הועבר או ריק). לדוגמה, כך אפשר להשתמש במקרים שבהם ה-RP מאפשר לרשום רק חשבונות מנוהלים תהליך האימות.

כשאין חשבונות שתואמים ל-domainHint, בתיבת הדו-שיח של FedCM מוצגת בקשת התחברות, שמאפשר למשתמש להתחבר לחשבון IdP שתואם לרמז המבוקש הגורם המוגבל. כשהמשתמש יקיש על ההנחיה, ייפתח חלון קופץ עם כתובת ה-URL לכניסה מצוינת ברכיב config . הקישור הוא מצורף עם הרמז להתחברות והפרמטרים של השאילתה לגבי הרמז לדומיין.

דוגמה לבקשת התחברות כשאין חשבונות שתואמים ל-domainHint.
דוגמה לבקשת התחברות כשאין חשבונות שתואמים ל-domainHint.