FedCM से जुड़े अपडेट: iframe डोमेन दिखाना

Chrome 142 से, FedCM यूज़र इंटरफ़ेस (यूआई) में iframe का डोमेन दिखाने का विकल्प चुना जा सकता है. ऐसा तब होता है, जब Relying Party (RP) को किसी दूसरी साइट पर तीसरे पक्ष के iframe के तौर पर एम्बेड किया जाता है. इस सुविधा से, उपयोगकर्ताओं को ज़्यादा पारदर्शिता मिलती है. ऐसा तब होता है, जब वे किसी ऐसी सेवा में साइन इन करते हैं जो किसी दूसरी वेबसाइट पर एम्बेड की गई है.

बैकग्राउंड

पहले, जब FedCM को क्रॉस-ऑरिजिन iframe से चालू किया जाता था, तब FedCM डायलॉग यूज़र इंटरफ़ेस (यूआई) में सिर्फ़ टॉप-लेवल साइट का डोमेन दिखता था. अगर उपयोगकर्ता किसी ऐसी सेवा से इंटरैक्ट कर रहे थे जो टॉप-लेवल की साइट से अलग थी, तो इससे उन्हें उलझन हो सकती है. उदाहरण के लिए, कोई उपयोगकर्ता ऐसी समाचार वेबसाइट पर हो सकता है जिसमें टिप्पणी करने वाला विजेट एम्बेड किया गया हो. जब उपयोगकर्ता टिप्पणी करने वाले विजेट में साइन इन करने की कोशिश करता है, तो FedCM डायलॉग सिर्फ़ समाचार वेबसाइट का डोमेन दिखाएगा, न कि टिप्पणी करने वाली सेवा का डोमेन:

FedCM डायलॉग के टाइटल में यह टेक्स्ट शामिल है: 'fedcm-demo-idp.dev की मदद से news-site.example में साइन इन करें'.
जब iframe से FedCM को कॉल किया जाता है, तब iframe का डोमेन यूज़र इंटरफ़ेस (यूआई) में नहीं दिखता.

इस समस्या को हल करने के लिए, Chrome में अब IdP के पास यह विकल्प है कि वे iframe के उस डोमेन के बारे में बता सकें जहां FedCM डायलॉग में टोकन भेजा जाता है. इसके अलावा, वे टॉप-लेवल की साइट के डोमेन के बारे में भी बता सकते हैं. इससे उपयोगकर्ता को साफ़ तौर पर यह पता चलता है कि साइन इन करने की प्रोसेस में कौनसी तीसरे पक्ष की सेवाएं शामिल हैं.

FedCM डायलॉग के टाइटल में यह टेक्स्ट शामिल है: 'fedcm-demo-idp.dev का इस्तेमाल करके news-site.example में साइन इन करें. news-site.example, widget.example से कॉन्टेंट एम्बेड करता है'.
जब iframe से FedCM को कॉल किया जाता है, तो आईडीपी यूज़र इंटरफ़ेस (यूआई) डायलॉग में iframe और एम्बेड करने वाली साइट, दोनों के डोमेन दिखाने का विकल्प चुन सकता है.

लागू करना

IdP का क्लाइंट मेटाडेटा एंडपॉइंट, client_id और top_frame_origin, दोनों को स्वीकार करता है. हालांकि, 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, दोनों का मालिकाना हक है, तो IdP सिर्फ़ टॉप-लेवल डोमेन दिखाने का विकल्प चुन सकता है. यह डिफ़ॉल्ट व्यवहार है. दोनों डोमेन दिखाने के लिए, 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 डेटाबेस पर किसी समस्या की शिकायत करें.

ज़्यादा जानें