FedCM के अपडेट: एपीआई डिसकनेक्ट करने के साथ-साथ दो अपडेट

Chrome 122 में, फ़ेडरेटेड क्रेडेंशियल के लिए, डिसकनेक्ट एपीआई Management API (FedCM) उपलब्ध है. कॉन्टेंट बनाने डिसकनेक्ट एपीआई, भरोसेमंद पक्षों को अपने उपयोगकर्ताओं को तीसरे पक्ष की कुकी पर निर्भर नहीं रहे बिना, अपने खाते से साइन इन करें. साथ ही, यहां ये FedCM की साइट मैनेज करने की सुविधा से जुड़े कुछ अपडेट हैं.

एपीआई डिसकनेक्ट करें

जब कोई उपयोगकर्ता, किसी भरोसेमंद पक्ष (आरपी) पर खाता बनाता है. इसका मतलब है कि वह साइट पहचान फ़ेडरेशन के माध्यम से, पहचान प्रोवाइडर (IdP—यह सेवा पुष्टि करने और खाते की जानकारी देती है अन्य पक्षों के लिए) रिकॉर्ड करती है. संग्रहित कनेक्शन की मदद से, आईडीपी (IdP) उन आरपी को ट्रैक कर सकता है जिनमें उपयोगकर्ता ने साइन इन किया है और उन्हें बेहतरीन अनुभव दे सकें. उदाहरण के लिए, बेहतर अनुभव पाने के लिए जब उपयोगकर्ता, बाद में आरपी पर वापस आता है, तो आईडीपी (IdP) वाले उपयोगकर्ता खाते को इस खाते में, अपने-आप फिर से पुष्टि करने और आपके हिसाब से बनाए गए बटन.

कभी-कभी, आईडीपी (IdP) खाते को आरपी से डिसकनेक्ट करने के लिए एपीआई की सुविधा देते हैं. हालांकि, डिसकनेक्ट फ़्लो की पुष्टि हो चुकी है और इसके लिए आईडीपी कुकी की ज़रूरत होती है. दुनिया में तीसरे पक्ष की कुकी के बिना, जब उपयोगकर्ता आरपी पर जाता है, तो उसे कोई ब्राउज़र नहीं दिखता आरपी के लिए एपीआई, ताकि इसे आईडीपी से डिसकनेक्ट किया जा सके. ऐसा इसलिए, क्योंकि एक से ज़्यादा आईडीपी (IdP) मौजूद हो सकते हैं किसी खास आरपी से जुड़े आईडीपी (IdP) से जुड़े खाते. ऐसा करने के लिए, डिसकनेक्ट फ़्लो की ज़रूरत होती है यह पता किया जा सकता है कि कौनसा खाता डिसकनेक्ट किया जा रहा है.

डिसकनेक्ट एपीआई इससे उपयोगकर्ता, आईडीपी (IdP) खाते को ब्राउज़र पर भी आरपी से डिसकनेक्ट कर सकता है आईडीपी सर्वर पर. ऐसा करने के लिए, उसे बताए गए एंडपॉइंट पर सिग्नल भेजें. उपयोगकर्ता की ज़रूरतें फ़ेडरेटेड क्रेडेंशियल का इस्तेमाल करके, आइडेंटिटी फ़ेडरेशन की प्रक्रिया से गुज़रना पड़ता है. मैनेजमेंट एपीआई (FedCM). उपयोगकर्ता के डिसकनेक्ट होने के बाद, उसे नया माना जाता है वह व्यक्ति, जब अगली बार आईडीपी (IdP) का इस्तेमाल करके आरपी में साइन इन करने की कोशिश करेगा.

आईडीपी को आरपी से डिसकनेक्ट करें

अगर किसी उपयोगकर्ता ने FedCM के ज़रिए, आईडीपी का इस्तेमाल करके पहले आरपी में साइन इन किया था, तो संबंध को ब्राउज़र द्वारा कनेक्ट की गई सूची के रूप में स्थानीय रूप से याद रखा जाता है खाते. आरपी, IdentityCredential.disconnect() फ़ंक्शन का इस्तेमाल करना होगा. इस फ़ंक्शन को टॉप लेवल आरपी फ़्रेम. आरपी को configURL पास करना होगा, clientId जिनका इस्तेमाल वह करता है इसके लिए, आपको आईडीपी (IdP) से और accountHint को डिसकनेक्ट करना होगा. खाता संकेत एक आर्बिट्रेरी स्ट्रिंग हो सकता है, बशर्ते डिसकनेक्ट एंडपॉइंट पहचान सके खाते से जुड़ा हो सकता है, उदाहरण के लिए कोई ईमेल पता या यूज़र आईडी, जिसमें ऐसा करना ज़रूरी नहीं है कि खाता सूची के एंडपॉइंट से मिले खाता आईडी का मिलान करें:

// Disconnect an IdP account "account456" from the RP "https://idp.com/". This is invoked on the RP domain.
IdentityCredential.disconnect({
  configURL: "https://idp.com/config.json",
  clientId: "rp123",
  accountHint: "account456"
});

IdentityCredential.disconnect(), Promise दिखाता है. इस वादे को अपवाद के तौर पर ये वजहें हो सकती हैं:

  • उपयोगकर्ता ने FedCM के ज़रिए आईडीपी (IdP) का इस्तेमाल करके, आरपी में साइन इन नहीं किया है.
  • FedCM की अनुमतियों की नीति के बिना, iframe में एपीआई को शुरू किया गया है.
  • configURL अमान्य है या डिसकनेक्ट एंडपॉइंट मौजूद नहीं है.
  • कॉन्टेंट की सुरक्षा के बारे में नीति (सीएसपी) की जांच नहीं हो सकी.
  • डिसकनेक्ट करने का एक अनुरोध बाकी है.
  • उपयोगकर्ता ने ब्राउज़र सेटिंग में FedCM को बंद कर दिया है.

जब आईडीपी का डिसकनेक्ट एंडपॉइंट जवाब दिया हो, तो आरपी और आईडीपी, ब्राउज़र खोलें और प्रॉमिस रिज़ॉल्व हो जाए. डिसकनेक्ट किए जा रहे उपयोगकर्ता खाते ये हैं डिसकनेक्ट के जवाब में बताया गया है एंडपॉइंट के बीच में खुलेगा.

आईडीपी (IdP) कॉन्फ़िगरेशन फ़ाइल सेट अप करें

डिसकनेक्ट एपीआई की सुविधा काम कर सके, इसके लिए आईडीपी (IdP) पर डिसकनेक्ट करने की सुविधा काम करनी चाहिए एंडपॉइंट के साथ-साथ, अपने आईडीपी (IdP) में disconnect_endpoint प्रॉपर्टी और उसका पाथ दें config फ़ाइल में सेट किया गया है.

{
  "accounts_endpoint": "/accounts",
  "id_assertion_endpoint": "/assertion",
  ...
  "disconnect_endpoint: "/disconnect"
}

डिसकनेक्ट एंडपॉइंट पर खाता डिसकनेक्ट करना

IdentityCredential.disconnect() शुरू करने पर, ब्राउज़र एक क्रॉस-ऑरिजिन भेजता है कुकी और सामग्री-प्रकार के साथ POST अनुरोध application/x-www-form-urlencoded का इस्तेमाल करके, इस डिस्कनेक्ट एंडपॉइंट को नीचे दी गई जानकारी:

प्रॉपर्टी ब्यौरा
account_hint आईडीपी (IdP) खाते के लिए हिंट.
client_id आरपी का क्लाइंट आइडेंटिफ़ायर.
POST /disconnect HTTP/1.1
Host: idp.example
Origin: rp.example
Content-Type: application/x-www-form-urlencoded
Cookie: 0x123
Sec-Fetch-Dest: webidentity

account_hint=account456&client_id=rp123

आपका अनुरोध मिलने पर, आईडीपी (IdP) सर्वर को ये काम करने चाहिए:

  1. सीओआरएस (क्रॉस-ऑरिजिन रिसॉर्स) की मदद से अनुरोध का जवाब देना शेयर करना).
  2. पुष्टि करें कि अनुरोध में Sec-Fetch-Dest: webidentity एचटीटीपी हेडर है.
  3. Origin हेडर को client_id के तय किए गए आरपी ऑरिजिन से मैच करें. अगर वे मेल नहीं खाते हैं, तो उन्हें अस्वीकार करें.
  4. वह खाता ढूंढें जो account_hint से मेल खाता हो.
  5. आरपी से कनेक्ट किए गए खातों की सूची से उपयोगकर्ता के खाते को डिसकनेक्ट करें.
  6. पहचान किए गए उपयोगकर्ता के account_id के साथ, JSON फ़ॉर्मैट में ब्राउज़र का जवाब दें फ़ॉर्मैट.

JSON पेलोड का उदाहरण इस तरह दिखता है:

{
  "account_id": "account456"
}

अगर आईडीपी (IdP) चाहता है कि ब्राउज़र उस खाते से जुड़े सभी खातों को डिसकनेक्ट करे आरपी, ऐसी स्ट्रिंग पास करें जो किसी भी खाता आईडी से मैच नहीं होती, जैसे कि "*".

आरपी और आईडीपी (IdP) साइट पर मौजूद होने पर, /.well-known/web-identity को चेक करने की प्रोसेस स्किप कर दी गई है

FedCM सिस्टम को डेवलप करते समय, आरपी सर्वर के डोमेन की टेस्टिंग या स्टेजिंग प्रोडक्शन आईडीपी सर्वर के सबडोमेन. उदाहरण के लिए, प्रोडक्शन आईडीपी सर्वर idp.example पर है. यह स्टेजिंग आरपी सर्वर और स्टेजिंग आईडीपी सर्वर, दोनों पर है staging.idp.example पर हैं. हालांकि, चूंकि जाने-पहचाने फ़ाइल को रखा जाना चाहिए अगर यह आईडीपी सर्वर के eTLD+1 के रूट में मौजूद है, तो idp.example/.well-known/web-identity और यह प्रोडक्शन सर्वर है. से यह ज़रूरी नहीं है कि डेवलपर, प्रोडक्शन ट्रैक में फ़ाइलों को नहीं बनाई है, तो सिस्टम FedCM को टेस्ट नहीं कर पाएगा.

Chrome 122 और इसके बाद के वर्शन में, अगर आरपी डोमेन और आईडीपी (IdP) डोमेन एक ही है, तो Chrome लोकप्रिय फ़ाइल की जांच नहीं करता. इस तरीके से, डेवलपर से मदद नहीं मिलेगी.

सबरिसॉर्स अब एक ही साइट पर लॉगिन करने की स्थिति सेट कर सकते हैं

इससे पहले, Chrome में सिर्फ़ लॉगिन स्थिति (इसके लिए उदाहरण के लिए, Set-Login: logged-in हेडर का इस्तेमाल करके) जब अनुरोध यह होता है सेम-ऑरिजन सभी पूर्वजों के साथ. इसकी वजह से सेम-साइट fetch() लॉगिन स्थिति सेट करने का अनुरोध करता है.

उदाहरण के लिए, किसी ऐसी वेबसाइट के बारे में सोचें जो उपयोगकर्ताओं को अपना उपयोगकर्ता नाम डालने और पासवर्ड idp.example पर है, लेकिन क्रेडेंशियल login.idp.example पर पोस्ट कर दिए गए हैं fetch() के साथ. लॉगिन स्थिति का उपयोग करके ब्राउज़र में लॉगिन स्थिति रिकॉर्ड करना एपीआई जनरेट नहीं किया जा सका, क्योंकि दोनों डोमेन, क्रॉस-ऑरिजिन और एक ही साइट हैं.

इस बदलाव के साथ, हमने लॉगिन स्टेटस एपीआई की शर्तों में छूट दी है यह एक ही साइट पहले से मौजूद हैं और ऊपर दिए गए उदाहरण को एचटीटीपी हेडर (Set-Login: logged-in) का इस्तेमाल करके login.idp.example के लॉगिन की स्थिति.

खास जानकारी

डिसकनेक्ट एपीआई का इस्तेमाल करके, FedCM अब आईडीपी (IdP) से आरपी को डिसकनेक्ट कर सकता है इसके लिए, तीसरे पक्ष की कुकी की ज़रूरत नहीं होती. ऐसा करने के लिए, कॉल करें आरपी पर IdentityCredential.disconnect(). इस फ़ंक्शन के साथ, ब्राउज़र आईडीपी के डिसकनेक्ट एंडपॉइंट पर अनुरोध भेजता है, ताकि आईडीपी पहले कनेक्शन की जांच करें और फिर ब्राउज़र से कनेक्ट करें.

हमने एलान किया है कि प्रतिबंधित पार्टी के समय, /.well-known/web-identity चेक को स्किप कर दिया गया है जांच के लिए, आईडीपी और आईडीपी एक ही साइट पर होते हैं. साथ ही, लॉगिन सेट करके इसी साइट के आईडीपी (IdP) सबरिसॉर्स से मिले एचटीटीपी रिस्पॉन्स हेडर के ज़रिए स्टेटस अब किया जा सकता है.