FedCM के बारे में अपडेट: डोमेन हिंट एपीआई

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

डोमेन हिंट एपीआई

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

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

खातों की सूची के एंडपॉइंट से JSON रिस्पॉन्स का एक उदाहरण कुछ ऐसा दिखेगा:

{
 "accounts": [{
   "id": "1234",
   "given_name": "John",
   "name": "John Doe",
   "email": "john_doe@idp.example",
   "picture": "https://idp.example/profile/123",
   "approved_clients": ["123", "456", "789"],
  }, {
   "id": "5678",
   "given_name": "Johnny",
   "name": "Johnny",
   "email": "johnny@idp.example",
   "picture": "https://idp.example/profile/456"
   "approved_clients": ["abc", "def", "ghi"],
   "domain_hints": ["corp.example"]
  }]
}

आरपी, खातों को फ़िल्टर करने के लिए, domainHint प्रॉपर्टी के साथ navigator.credentials.get() को कॉल कर सकता है. उदाहरण के लिए, मान लें कि कोई उपयोगकर्ता corp-partner.example पर जाता है और corp.example के खाते से साइन इन करता है. साइट नीचे बताए गए तरीके से एपीआई का इस्तेमाल करेगी:

return await navigator.credentials.get({
  identity: {
    providers: [{
      configURL: "https://idp.example/manifest.json",
      clientId: "abc",
      nonce: nonce,
      domainHint : "corp.example"
    }]
  }
});

सर्वर साइड फ़िल्टर करने के लिए, domainHint वैल्यू को खातों की सूची एंडपॉइंट में नहीं भेजा जाता. ऐसा इसलिए, क्योंकि वह आईडीपी (IdP) के लिए फ़िंगरप्रिंटिंग वेक्टर हो सकता है. इसके बजाय, Chrome हमेशा की तरह FedCM अनुरोध करता है और उन खातों को फ़िल्टर कर देता है जो navigator.credentials.get() कॉल में बताई गई domainHint वैल्यू से मेल नहीं खाते. इसके बाद, Chrome, उपयोगकर्ता को खातों की नई सूची के साथ FedCM डायलॉग दिखाता है. यह तरीका लॉगिन हिंट एपीआई की तरह है. हालांकि, ये दो एपीआई अलग-अलग सवालों के जवाब देते हैं. लॉगिन हिंट एपीआई का लक्ष्य यह जवाब देना है कि "मुझे जिस उपयोगकर्ता को चाहते हैं उसके लिए कौनसा आइडेंटिफ़ायर है?", जबकि Domain Hint का मकसद यह बताना है कि "यह खाता किस कंपनी या सर्वर से जुड़ा होना चाहिए?".

domainHint: "any" का इस्तेमाल करने पर Chrome उन खातों को फ़िल्टर करके बाहर निकाल देता है जिनमें कोई डोमेन नहीं होता है (इसका मतलब है कि domain_hints पास नहीं किया गया है या खाली है). उदाहरण के लिए, यह उन मामलों को इस्तेमाल करने की अनुमति देता है जहां आरपी, साइनअप की प्रोसेस में सिर्फ़ मैनेज किए जा रहे खातों को अनुमति देता है.

जब कोई भी खाता domainHint से मैच नहीं होता, तो FedCM डायलॉग बॉक्स में लॉगिन करने का अनुरोध दिखता है. इससे उपयोगकर्ता उस आईडीपी खाते से लॉगिन कर सकता है जिसका अनुरोध आरपी ने किया है. जब लोग प्रॉम्प्ट पर टैप करते हैं, तो एक पॉप-अप विंडो खुलती है. इस विंडो में config file में बताया गया लॉगिन यूआरएल होता है. इसके बाद, लिंक को लॉगिन संकेत और डोमेन से जुड़े क्वेरी पैरामीटर के साथ जोड़ा जाता है.

डोमेन हिंट से कोई खाता मेल न खाने पर, लॉगिन करने के अनुरोध का एक उदाहरण.
उदाहरण के तौर पर, domainHint से कोई भी खाता मेल न खाने पर, लॉगिन करने का अनुरोध.