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

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

डोमेन संकेत एपीआई

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

डोमेन हिंट एपीआई की मदद से, प्रतिबंधित पार्टी किसी FedCM API पर domainHint प्रॉपर्टी तय कर सकती है उपयोगकर्ता से मेल खाने वाले खाते दिखाने के लिए कॉल करें. आईडीपी (IdP) से जानकारी मिल सकती है खातों की सूची से मिले जवाब के तौर पर 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 अनुरोध करता है और खातों को फ़िल्टर कर देता है जिनका मिलान उस domainHint मान से नहीं होता है, navigator.credentials.get() कॉल. इसके बाद, Chrome नई खाता सूची वाले उपयोगकर्ता. यह तरीका लॉगिन हिंट के जैसा है API, लेकिन ये दोनों एपीआई से अलग-अलग सवालों के जवाब मिलते हैं. लॉगिन हिंट एपीआई का मकसद इस बात का जवाब देना है कि "यह के लिए आइडेंटिफ़ायर के बारे में बताएं, जबकि डोमेन हिंट का मकसद "किसका जवाब देना है?" कॉर्पोरेशन या सर्वर का यह खाता होना चाहिए?".

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

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

डोमेन हिंट से किसी खाते का मैच न होने पर लॉगिन के प्रॉम्प्ट का उदाहरण.
domainHint से मेल न खाने वाले किसी खाते के लॉगिन प्रॉम्प्ट का उदाहरण.