تعديلات من خلال FedCM: مرحلة التجربة والتقييم في Button Mode API وCORS وSameSite

بدايةً من Chrome 125، ستبدأ Button Mode API في مرحلة تجربة المصدر على أجهزة الكمبيوتر المكتبي. باستخدام Button Mode API، يمكن لموفِّري الهوية استخدام FedCM API حتى في حال عدم تسجيل المستخدمين جلسات نشطة لموفّر الهوية عند طلب البيانات من واجهة برمجة التطبيقات. ويمكن للمستخدمين بعد ذلك تسجيل الدخول إلى موقع إلكتروني باستخدام حسابهم الموحّد بدون الانتقال إلى الموقع الإلكتروني لموفِّر الهوية (IdP). تكون واجهة المستخدم في FedCM في وضع الزر أكثر بروزًا مقارنة بواجهة المستخدم في تدفق الأداة الحالية لأنها تُحاط بإيماءة المستخدم وتعكس بشكل أفضل نية المستخدم لتسجيل الدخول.

واجهة برمجة التطبيقات لوضع الزر

أصبحت واجهة المستخدم في FedCM متاحة كأداة معروضة في أعلى يسار الشاشة على الكمبيوتر المكتبي، أو كبطاقة سفلية على الأجهزة الجوّالة بعد استدعاء واجهة برمجة التطبيقات، ما قد يحدث عند وصول المستخدم إلى الطرف المعتمد (RP). ويُعرف ذلك باسم وضع التطبيقات المصغّرة. لعرض التطبيق المصغّر، على المستخدم تسجيل الدخول إلى موفِّر الهوية قبل الوصول إلى الجهة المحظورة. لم يكن لدى FedCM في حد ذاته طريقة موثوقة للسماح للمستخدم بتسجيل الدخول إلى موفِّر الهوية قبل أن يتمكن من السماح للمستخدم بتسجيل الدخول إلى الجهة المحظورة باستخدام الحساب المتاح في موفِّر الهوية. إنّ برنامج FedCM على وشك إضافة طريقة لإجراء ذلك.

باستخدام وضع التطبيق المصغّر، يظهر مربع حوار في أعلى يسار الصفحة على متصفّح Chrome على أجهزة الكمبيوتر المكتبي بدون تفعيل المستخدم.
باستخدام وضع التطبيقات المصغّرة، يظهر مربّع حوار في أعلى يسار متصفّح Chrome على أجهزة الكمبيوتر المكتبي بدون تفعيل المستخدم.

تضيف واجهة برمجة التطبيقات لوضع الزر الجديدة وضعًا جديدًا لواجهة المستخدم يُسمى وضع الزر. على عكس وضع الأداة، لا من المفترض أن يتم استدعاء وضع الزر بمجرد وصول المستخدم إلى الجهة المحظورة. بدلاً من ذلك، من المفترض أن يتم استدعاؤه عندما يبدأ المستخدم عملية تسجيل الدخول، مثل الضغط على زر "تسجيل الدخول باستخدام موفِّر الهوية".

عند الضغط على الزر، يتحقّق برنامج FedCM مما إذا كان المستخدم مسجّلاً الدخول إلى موفِّر الهوية من خلال جلب إلى نقطة نهاية الحسابات أو حالة تسجيل الدخول المخزَّنة في المتصفّح. في حال لم يسجّل المستخدم الدخول بعد، يطلب FedCM من المستخدم تسجيل الدخول إلى موفِّر الهوية باستخدام login_url الذي قدّمه موفِّر الهوية من خلال نافذة منبثقة. إذا علم المتصفّح أنّ المستخدم سبق وسجّل الدخول إلى موفِّر الهوية أو بعد تسجيل المستخدم الدخول إلى موفِّر الهوية من خلال النافذة المنبثقة، يفتح تطبيق FedCM مربع حوار نمطي للمستخدم لاختيار حساب موفِّر الهوية لتسجيل الدخول من خلاله. من خلال اختيار حساب، يمكن للمستخدم المتابعة لتسجيل الدخول إلى الجهة المحظورة باستخدام حساب موفِّر الهوية.

باستخدام وضع الزر، يتم عرض مربع حوار مشروط في أعلى منتصف الشاشة على Chrome على جهاز سطح المكتب.
باستخدام وضع الزر، يظهر مربع حوار مشروط في أعلى منتصف الشاشة على متصفّح Chrome على أجهزة الكمبيوتر المكتبي.

جرِّب ذلك بنفسك باستخدام Chrome 125 على https://fedcm-rp-demo.glitch.me/button_flow.

يسجّل مستخدم الدخول إلى الجهة المحظورة باستخدام Button Mode API.

لاستخدام Button Mode API:

  • تفعيل الميزة التجريبية FedCmButtonMode في chrome://flags.
  • احرص على استدعاء واجهة برمجة التطبيقات وراء التفعيل العابر للمستخدم مثل النقر على زر.
  • استدعِ واجهة برمجة التطبيقات باستخدام المعلَمة mode على النحو التالي:
  return await navigator.credentials.get({
    identity: {
      providers: [{
        configURL: "https://idp.example/config.json",
        clientId: "123",
        nonce:"456",
      }],
      mode: "button"
    }
  });

سيرسل المتصفّح مَعلمة جديدة إلى نقطة نهاية تأكيد رقم التعريف تمثِّل نوع الطلب من خلال تضمين 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 السماح للمستخدمين "باستخدام حسابات أخرى" في أداة اختيار الحساب، على سبيل المثال، عندما يدعم موفرو الهوية حسابات متعددة أو استبدال الحساب الحالي.

لتفعيل خيار استخدام حساب آخر:

  • يمكنك تفعيل الميزة التجريبية "FedCmUseOtherAccount" في "chrome://flags" أو التسجيل في مرحلة التجربة والتقييم في Button Mode API.
  • يُحدِّد موفِّر الهوية ما يلي في ملف إعداد موفِّر الهوية:
{
  "accounts_endpoint" : ...,
  "modes: {
    "button": {
      "supports_use_other_account": true,
    }
  }
}

المشاركة في مرحلة التجربة والتقييم

يمكنك تجربة Button Mode API محليًا عن طريق تفعيل علامة Chrome chrome://flags#fedcm-button-mode على الإصدار 125 من Chrome أو الإصدارات الأحدث.

يمكن أيضًا لموفِّري الهوية تفعيل "وضع الزر" من خلال تسجيل مرحلة التجربة والتقييم:

تتيح لك مرحلة التجربة والتقييم تجربة ميزات جديدة وتقديم ملاحظات حول سهولة استخدامها وعملها العملي وفعاليتها في منتدى معايير الويب. لمزيد من المعلومات، اطّلِع على دليل الفترات التجريبية الأصلية لمطوّري البرامج على الويب.

تتوفّر مرحلة التجربة والتقييم على Button Mode API من Chrome بدءًا من 125 وحتى Chrome 127.

  1. انتقِل إلى صفحة تسجيل مرحلة التجربة والتقييم.
  2. انقر على زر Register (تسجيل) واملأ النموذج لطلب رمز مميّز.
  3. أدخِل أصل موفّر الهوية كـ مصدر الويب.
  4. تحقَّق من مطابقة الجهات الخارجية لإدخال الرمز المميّز باستخدام JavaScript على مصادر أخرى.
  5. انقر على إرسال.
  6. يمكنك تضمين الرمز المميّز الذي تم إصداره على موقع إلكتروني تابع لجهة خارجية.

لتضمين الرمز المميّز على موقع إلكتروني تابع لجهة خارجية، أضِف الرمز التالي إلى مكتبة JavaScript أو حزمة تطوير البرامج (SDK) لموفِّر الهوية اللذان يتم عرضهما من مصدر موفِّر الهوية.

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

استبدِل TOKEN_GOES_HERE برمزك المميّز.

ستكون سياسة CORS وSameSite=None مطلوبة في الإصدار 125 من Chrome.

CORS

سيفرض Chrome CORS على نقطة نهاية تأكيد رقم التعريف بدءًا من Chrome 125.

بروتوكول CORS (يشارك الموارد المتعدّدة المصادر) هو نظام يتكوّن من نقل عناوين HTTP التي تحدّد ما إذا كانت المتصفّحات تحظر رمز JavaScript للواجهة الأمامية من الوصول إلى استجابات الطلبات من مصادر متعددة. يجب أن تستجيب نقطة نهاية تأكيد رقم التعريف على خادم موفِّر الهوية للطلب برؤوس إضافية. في ما يلي مثال على عنوان استجابة لطلب من https://fedcm-rp-demo.glitch.me:

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

السمة SameSite=None

توضّح مَعلمة SameSite لملف تعريف الارتباط ما إذا كان ملف تعريف الارتباط يقتصر على سياق الطرف الأول أو الموقع الإلكتروني نفسه. ومن خلال تحديده ليكون None، يمكن إرسال ملف تعريف الارتباط إلى نطاق تابع لجهة خارجية.

في FedCM، يرسل Chrome ملفات تعريف الارتباط إلى نقطة نهاية الحسابات ونقطة نهاية تأكيد رقم التعريف ونقطة نهاية إلغاء الربط. واعتبارًا من الإصدار 125 من Chrome، سيرسل Chrome هذه الطلبات المعتمدة مع ملفات تعريف الارتباط فقط التي تم وضع علامة SameSite=None عليها صراحةً.