עדכונים ב-FedCM: הצגת דומיין של iframe

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

רקע

בעבר, כש-FedCM הופעל מתוך iframe חוצה מקורות, ממשק המשתמש של תיבת הדו-שיח של FedCM הציג רק את הדומיין של האתר ברמה העליונה. מצב כזה עלול ליצור בלבול בקרב המשתמשים אם השירות שהם יצרו איתו אינטראקציה שונה מהאתר ברמה העליונה. לדוגמה, משתמש יכול להיכנס לאתר חדשות שמוטמע בו ווידג'ט של תגובות. כשמשתמש מנסה להיכנס לווידג'ט של התגובות, בתיבת הדו-שיח של FedCM מוצג רק הדומיין של אתר החדשות, ולא הדומיין של שירות התגובות:

הכותרת של תיבת הדו-שיח של FedCM כוללת את הטקסט: 'כניסה ל-news-site.example באמצעות fedcm-demo-idp.dev'.
כשמפעילים את FedCM מתוך iframe, הדומיין של ה-iframe לא מוצג בממשק המשתמש.

כדי לפתור את הבעיה הזו, ב-Chrome יש עכשיו דרך לספקי זהויות לציין את הדומיין של ה-iframe שאליו נשלח האסימון בתיבת הדו-שיח של FedCM, בנוסף לדומיין של האתר ברמה העליונה. כך המשתמש מקבל תמונה ברורה יותר לגבי שירותי הצד השלישי שמעורבים בתהליך הכניסה.

הכותרת של תיבת הדו-שיח של FedCM כוללת את הטקסט: 'Sign in to news-site.example with fedcm-demo-idp.dev. news-site.example embeds content from widget.example'.
כשקוראים ל-FedCM מתוך ה-iframe, ספק הזהויות יכול לבחור להציג את ה-iframe ואת הדומיינים של האתר המטמיע בתיבת הדו-שיח של ממשק המשתמש.

הטמעה

נקודת הקצה של מטא-נתוני הלקוח של ספק הזהויות מקבלת גם client_id וגם top_frame_origin (אופציונלי), לדוגמה:

GET /client_metadata_endpoint?client_id=1234&top_frame_origin=https%3A%2F%2Ftop-frame.example HTTP/1.1
Host: idp.example
Origin: https://iframe.example/
Accept: application/json
Sec-Fetch-Dest: webidentity

לאחר מכן, ספק הזהויות יכול להטמיע לוגיקה מותאמת אישית כדי לקבוע אם הצד המסתמך והאתר ברמה העליונה הם אותו צד. אם ספק ה-RP הוא הבעלים של האתר ברמה העליונה ושל ה-iframe, יכול להיות שספק ה-IdP יבחר להציג רק את הדומיין ברמה העליונה, וזוהי התנהגות ברירת המחדל. כדי להציג את שני הדומיינים, ספק הזהויות צריך לכלול את המאפיין client_is_third_party_to_top_frame_origin בתגובה של נקודת הקצה של מטא-נתוני הלקוח ולהגדיר את הערך שלו כ-true.

זוהי דוגמה לתגובה של נקודת הקצה של מטא-נתוני הלקוח:

// In the client metadata endpoint
const clientIsThirdParty = isClientOriginDifferentFromTopFrame();
responseData = {
  privacy_policy_url: "..."
  terms_of_service_url: "...",
  client_is_third_party_to_top_frame_origin: clientIsThirdParty,
}

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

ערך ברירת המחדל של client_is_third_party_to_top_frame_origin הוא false, כך שהשינוי הזה לא ישפיע על הטמעות קיימות.

פרטים נוספים זמינים במסמכי התיעוד בנושא הטמעת FedCM בספק זהויות.

רוצה לנסות?

אפשר לצפות בהדגמה חיה של התכונה הזו בכתובת fedcm-demo-rp.dev/iframe. הקוד מתארח במאגר ההדגמה ב-GitHub.

נשמח לקבל ממך משוב על התכונה הזו ועל תכונות אחרות של FedCM. נשמח לקבל ממך משוב ולדווח על בעיות במאגר FedCM ב-GitHub.

מידע נוסף