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