Chrome 123 में, Federated Credential Management API (FedCM) के साथ-साथ डोमेन के बारे में अहम जानकारी का इस्तेमाल किया जा सकता है. डोमेन हिंट एपीआई की मदद से, डेवलपर उपयोगकर्ताओं को बेहतर अनुभव दे सकते हैं. इसके लिए, वे सिर्फ़ उस डोमेन के फ़ेडरेटेड लॉगिन खाते दिखाते हैं जिसे वे स्वीकार करते हैं.
Domain Hint API
FedCM का इस्तेमाल करके, उपयोगकर्ता को किसी भरोसेमंद पक्ष (RP, किसी वेबसाइट को रेफ़र करने वाला) में लॉगिन करना आसान बनाया जा सकता है. इसके लिए, पहचान की पुष्टि करने वाली सेवा देने वाली कंपनी (IdP) से मिली खाते की जानकारी का इस्तेमाल किया जाता है. हालांकि, कुछ मामलों में आरपी को पहले से पता होता है कि सिर्फ़ किसी खास डोमेन से जुड़े खातों को साइट पर लॉगिन करने की अनुमति है. यह आम तौर पर, एंटरप्राइज़ के उन मामलों में होता है जहां ऐक्सेस की जा रही साइट, किसी कॉर्पोरेट डोमेन तक ही सीमित होती है. उपयोगकर्ताओं को बेहतर अनुभव देने के लिए, FedCM API की मदद से आरपी को सिर्फ़ वे खाते दिखाए जाते हैं जिनका इस्तेमाल आरपी में लॉगिन करने के लिए किया जा सकता है. इससे, ऐसे मामलों से बचा जा सकता है जहां कोई उपयोगकर्ता, कॉर्पोरेट डोमेन से बाहर के खाते का इस्तेमाल करके आरपी में लॉगिन करने की कोशिश करता है. हालांकि, बाद में उसे गड़बड़ी का मैसेज दिखता है (या लॉगिन काम न करने पर कोई मैसेज नहीं दिखता), क्योंकि सही तरह के खाते का इस्तेमाल नहीं किया गया था.
डोमेन हिंट एपीआई की मदद से, आरपी, FedCM एपीआई कॉल पर domainHint
प्रॉपर्टी तय कर सकते हैं, ताकि उपयोगकर्ता को सिर्फ़ मैच होने वाले खाते दिखाए जा सकें. आईडीपी, खातों की सूची वाले एंडपॉइंट से मिले रिस्पॉन्स के हिस्से के तौर पर domain_hints
प्रॉपर्टी दे सकता है. इससे यह पता चलता है कि खाता किस(किस) डोमेन से जुड़ा है. इस तरह, ब्राउज़र, आईडीपी को अनुरोध किए गए डोमेन के हिंट के बारे में बताए बिना, मैच होने वाले खाते दिखा सकता है.
खातों की सूची वाले एंडपॉइंट से मिलने वाले 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
वैल्यू को खातों की सूची के एंडपॉइंट पर नहीं भेजा जाता, क्योंकि यह आईडीपी के लिए फ़िंगरप्रिंट वेक्टर हो सकता है.
इसके बजाय, Chrome सामान्य तौर पर FedCM अनुरोध करता है और ऐसे खातों को फ़िल्टर कर देता है जो navigator.credentials.get()
कॉल से तय की गई domainHint
वैल्यू से मेल नहीं खाते. इसके बाद, Chrome उपयोगकर्ता को नए खातों की सूची के साथ FedCM डायलॉग दिखाता है. यह तरीका, लॉगिन करने के लिए दिए गए संकेत वाले एपीआई से मिलता-जुलता है. हालांकि, ये दोनों एपीआई अलग-अलग सवालों के जवाब देते हैं. लॉगिन हिंट एपीआई का मकसद, "मेरे पसंदीदा उपयोगकर्ता का आइडेंटिफ़ायर कौनसा है?" का जवाब देना है. वहीं, डोमेन हिंट का मकसद, "यह खाता किस कॉर्पोरेशन या सर्वर का है?" का जवाब देना है.
domainHint: "any"
का इस्तेमाल करने पर, Chrome ऐसे खातों को फ़िल्टर कर देता है जिनमें कोई डोमेन नहीं है. इसका मतलब है कि domain_hints
को पास नहीं किया गया है या वह खाली है. उदाहरण के लिए,
इससे उन मामलों में इस्तेमाल किया जा सकता है जहां आरपी, साइन अप करने की प्रोसेस में सिर्फ़ मैनेज किए जा रहे खातों को अनुमति देता है.
अगर कोई भी खाता domainHint
से मेल नहीं खाता है, तो FedCM डायलॉग बॉक्स में उपयोगकर्ता को लॉगिन करने के लिए कहा जाता है. इससे उपयोगकर्ता, आरपी के अनुरोध किए गए हिंट से मैच करने वाले आईडीपी खाते में लॉगिन कर सकता है. जब उपयोगकर्ता प्रॉम्प्ट पर टैप करता है, तो config
फ़ाइल में बताए गए लॉगिन यूआरएल के साथ एक पॉप-अप विंडो खुलती है. इसके बाद, लिंक को लॉगिन के लिए दिए गए हिंट और डोमेन के लिए दिए गए हिंट के क्वेरी पैरामीटर के साथ जोड़ दिया जाता है.

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