تعديلات على FedCM: عرض نطاق إطار iframe

بدءًا من الإصدار 142 من Chrome، يمكنك اختيار عرض نطاق الإطار iframe في واجهة مستخدم FedCM عندما يتم تضمين الجهة المعتمِدة (RP) كإطار iframe تابع لجهة خارجية على موقع إلكتروني آخر. تعزّز هذه الميزة الشفافية للمستخدمين عند تسجيل الدخول إلى خدمة مضمّنة في موقع إلكتروني آخر.

الخلفية

في السابق، عندما كان يتم استدعاء FedCM من داخل إطار iframe من مصادر متعددة، كانت واجهة مستخدم مربع الحوار FedCM تعرض فقط نطاق الموقع الإلكتروني ذي المستوى الأعلى. وقد يؤدي ذلك إلى إرباك المستخدمين إذا كانت الخدمة التي يتفاعلون معها مختلفة عن الموقع الإلكتروني من المستوى الأعلى. على سبيل المثال، قد يتصفّح المستخدم موقعًا إلكترونيًا إخباريًا يتضمّن أداة تعليقات. عندما يحاول المستخدم تسجيل الدخول إلى أداة التعليق، لن يعرض مربّع حوار FedCM سوى نطاق الموقع الإلكتروني الإخباري، وليس نطاق خدمة التعليق:

يتضمّن عنوان مربّع الحوار FedCM النص التالي: "تسجيل الدخول إلى news-site.example باستخدام fedcm-demo-idp.dev".
عند استدعاء FedCM من داخل إطار iframe، لا يتم عرض نطاق إطار iframe في واجهة المستخدم.

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

يتضمّن عنوان مربّع حوار FedCM النص التالي: "تسجيل الدخول إلى news-site.example باستخدام fedcm-demo-idp.dev. يضمّن news-site.example محتوًى من 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

يمكن لموفِّر الهوية (IdP) بعد ذلك تنفيذ منطق مخصّص لتحديد ما إذا كان الطرف المعتمد (RP) والموقع الإلكتروني ذو المستوى الأعلى هما الطرف نفسه. إذا كان الناشر يملك كلاً من الموقع الإلكتروني ذي المستوى الأعلى وإطار iframe، يمكن لموفّر خدمة تحديد الهوية اختيار عرض النطاق ذي المستوى الأعلى فقط، وهو السلوك التلقائي. لعرض كلا النطاقَين، يجب أن يتضمّن موفّر الهوية السمة 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.

مزيد من المعلومات