עדכונים מ-FedCM: גרסת המקור לניסיון של לחצן מצב API, CORS ו-SameSite

החל מגרסה 125 של Chrome, Button Mode API מתחילה גרסת מקור לניסיון במחשב. באמצעות ה-API של מצב הלחצן, ספקי זהויות יכולים להשתמש ב-FedCM API גם אם למשתמשים שלהם אין סשנים פעילים של IdP בקריאה ל-API. לאחר מכן, המשתמשים יוכלו להיכנס לאתר באמצעות החשבון המאוחד שלהם בלי לעבור לאתר של IdP. ממשק המשתמש של FedCM במצב הלחצנים בולט יותר בהשוואה לזה שבתהליך הווידג'ט הקיים, כי הוא מוגבל על ידי תנועות של המשתמש ומשקף בצורה טובה יותר את כוונת המשתמש להיכנס.

ממשק API של מצב לחצן

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

במצב ווידג'ט, מוצגת תיבת דו-שיח בפינה השמאלית העליונה ב-Chrome במחשב, ללא הפעלת משתמש.
במצב ווידג'ט, מופיעה תיבת דו-שיח בפינה השמאלית העליונה ב-Chrome במחשב, ללא הפעלת המשתמש.

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

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

במצב הלחצן, מוצגת תיבת דו-שיח חלון עזר בחלק העליון במרכז ב-Chrome במחשב.
במצב הלחצן, מוצגת תיבת דו-שיח של חלון עזר בחלק העליון המרכזי ב-Chrome במחשב.

אתם יכולים לנסות בעצמכם ב-Chrome 125 בכתובת https://fedcm-rp-demo.glitch.me/button_flow.

משתמש נכנס ל-RP באמצעות לחצן מצב API.

כדי להשתמש ב-button Mode API:

  • הפעלת התכונה הניסיונית FedCmButtonMode ב-chrome://flags.
  • חשוב להקפיד להפעיל את ה-API מאחורי הפעלה זמנית של משתמשים, כמו לחיצה על לחצן.
  • מפעילים את ה-API עם הפרמטר mode, באופן הבא:
  return await navigator.credentials.get({
    identity: {
      providers: [{
        configURL: "https://idp.example/config.json",
        clientId: "123",
        nonce:"456",
      }],
      mode: "button"
    }
  });

הדפדפן ישלח פרמטר חדש לנקודת הקצה של טענת הנכונות (endpoint) שמייצגת את סוג הבקשה, עם הערך mode=button:

POST /fedcm_assertion_endpoint HTTP/1.1
Host: idp.example
Origin: https://rp.example/
Content-Type: application/x-www-form-urlencoded
Cookie: 0x23223
Sec-Fetch-Dest: webidentity
account_id=123&client_id=client1234&nonce=Ct60bD&disclosure_text_shown=true&is_auto_selected=false&mode=button

שימוש באפשרות אחרת מהחשבון

ה-RP יכול לאפשר למשתמשים 'להשתמש בחשבונות אחרים' ב-Account Chooser, לדוגמה, כשספקי IdP תומכים במספר חשבונות או מחליפים את החשבון הקיים.

כדי להפעיל את האפשרות להשתמש בחשבון אחר:

  • צריך להפעיל את התכונה הניסיונית FedCmUseOtherAccount ב-chrome://flags או לרשום את גרסת המקור לניסיון של ה-API של מצב הלחצן.
  • ה-IdP מציין את הפרטים הבאים בקובץ התצורה של IdP:
{
  "accounts_endpoint" : ...,
  "modes: {
    "button": {
      "supports_use_other_account": true,
    }
  }
}

השתתפות בגרסת המקור לניסיון

תוכלו לנסות את ה-API של מצב הלחצן באופן מקומי על ידי הפעלת דגל Chrome chrome://flags#fedcm-button-mode ב-Chrome בגרסה 125 ואילך.

ספקי IdP יכולים גם להפעיל את מצב הלחצן על ידי רישום גרסת מקור לניסיון:

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

גרסת המקור לניסיון של לחצן המצב של ה-API זמינה מ-Chrome 125 עד Chrome 127.

  1. עוברים אל דף הרישום של גרסת המקור לניסיון.
  2. לוחצים על הלחצן הרשמה וממלאים את הטופס כדי לבקש אסימון.
  3. מזינים את מקור ה-IdP בתור מקור האינטרנט.
  4. בודקים את ההתאמה של צד שלישי כדי להחדיר את האסימון באמצעות JavaScript במקורות אחרים.
  5. לוחצים על שליחה.
  6. להטמיע את האסימון שהונפק באתר של צד שלישי.

כדי להטמיע את האסימון באתר של צד שלישי, צריך להוסיף את הקוד הבא לספריית ה-JavaScript או ל-SDK של ה-IdP שמוצג מהמקור של ה-IdP.

const tokenElement = document.createElement('meta');
tokenElement.httpEquiv = 'origin-trial';
tokenElement.content = 'TOKEN_GOES_HERE';
document.head.appendChild(tokenElement);

צריך להחליף את TOKEN_GOES_HERE באסימון משלך.

CORS ו-SameSite=None יידרשו ב-Chrome 125

CORS

Chrome יאכוף את CORS על נקודת הקצה של טענת הנכונות (endpoint) שמתחילה מ-Chrome 125.

CORS (שיתוף משאבים בין מקורות) היא מערכת שמורכבת מכותרות HTTP, שקובעת אם דפדפנים חוסמים את הגישה של קוד JavaScript בממשק הקצה לתגובות לבקשות ממקורות שונים. נקודת הקצה של טענת הנכוֹנוּת (assertion) של המזהה בשרת ה-IdP חייבת להגיב לבקשה עם כותרות נוספות. זוהי דוגמה לכותרת תגובה לבקשה מאת https://fedcm-rp-demo.glitch.me:

Access-Control-Allow-Origin: https://fedcm-rp-demo.glitch.me
Access-Control-Allow-Credentials: true

SameSite=ללא

פרמטר SameSite של קובץ ה-cookie מצהיר אם קובץ ה-cookie מוגבל להקשר של צד ראשון או לאותו אתר. אם מציינים את הערך None, ניתן לשלוח את קובץ ה-cookie לדומיין של צד שלישי.

ב-FedCM, דפדפן Chrome שולח קובצי cookie לנקודת הקצה של החשבונות, לנקודת הקצה של טענת הנכונות (endpoint) של המזהה ולנקודת הקצה לניתוק. החל מגרסה Chrome 125, Chrome ישלח את הבקשות עם פרטי הכניסה האלה רק עם קובצי Cookie שמסומנים באופן מפורש כ-SameSite=None.