अपनी साइट पर FedCM चालू करने के लिए, भरोसेमंद पक्षों (आरपी) को यह तरीका अपनाना होगा:
- पक्का करें कि आरपी की साइट पर, FedCM एंडपॉइंट की अनुमति हो.
- उपयोगकर्ता की पुष्टि करने के लिए, FedCM JavaScript API का इस्तेमाल करें.
- आईडीपी (या Chrome 136 से कई आईडीपी) को अपना मेटाडेटा दें. जैसे, निजता नीति और सेवा की शर्तों के यूआरएल.
- [ज़रूरी नहीं] यूज़र एक्सपीरियंस (यूएक्स) मोड चुनकर, लॉगिन या डोमेन के बारे में अहम जानकारी देकर, कस्टम पैरामीटर पास करके, उपयोगकर्ता की खास जानकारी का अनुरोध करके, गड़बड़ी का कस्टम मैसेज देकर या उपयोगकर्ताओं की फिर से पुष्टि करने का तरीका चुनकर, उपयोगकर्ता अनुभव को पसंद के मुताबिक बनाएं.
भरोसेमंद पक्ष पर FedCM API को कॉल करना
आईडीपी (IdP) का कॉन्फ़िगरेशन और एंडपॉइंट उपलब्ध होने के बाद, आरपी (RP) navigator.credentials.get()
को कॉल करके, उपयोगकर्ता को आईडीपी की मदद से आरपी में साइन इन करने की अनुमति देने का अनुरोध कर सकते हैं.
एपीआई को कॉल करने से पहले, आपको यह पुष्टि करनी होगी कि FedCM, उपयोगकर्ता के ब्राउज़र पर उपलब्ध है. यह देखने के लिए कि FedCM उपलब्ध है या नहीं, अपने FedCM लागू करने के तरीके के आस-पास यह कोड डालें:
if ('IdentityCredential' in window) {
// If the feature is available, take action
} else {
// FedCM is not supported, use a different identity solution
}
किसी उपयोगकर्ता को FedCM का इस्तेमाल करके, आरपी पर आईडीपी में साइन इन करने की अनुमति देने के लिए, आरपी navigator.credentials.get()
को कॉल कर सकता है.
Chrome 136 से, आरपी एक से ज़्यादा आईडीपी के साथ काम कर सकता है. इसके लिए, एक ही navigator.credentials.get()
कॉल में कई आइडेंटिटी प्रोवाइडर का कलेक्शन तय करना होगा. उदाहरण के लिए:
const credential = await navigator.credentials.get({
identity: {
// Specify the IdP (or multiple IdPs, supported from Chrome 136) this Relying Party supports
providers: [
{
configURL: 'https://accounts.idp-1.example/config.json',
clientId: '********'
},
{
configURL: 'https://accounts.idp-2.example/config.json',
clientId: '********'
}]
}
},
);
const { token } = credential;
// Get the current IdP's configURL to identify which provider the user is signed in with
const currentIdpConfigUrl = credential.configURL;
if (currentIdpConfigUrl === 'https://idp1.example/foo.json') {
// handle the case where the user signed in with idp1
} else if (currentIdpConfigUrl === 'https://idp2.example/bar.json') {
// handle the case where the user signed in with idp2
}
कॉन्टेक्स्ट प्रॉपर्टी
context
प्रॉपर्टी का इस्तेमाल करके, आरपी, FedCM डायलॉग यूज़र इंटरफ़ेस (यूआई) में स्ट्रिंग में बदलाव कर सकता है. उदाहरण के लिए, "rp.example में साइन इन करें…", "idp.example का इस्तेमाल करें…". ऐसा, पहले से तय किए गए पुष्टि के संदर्भों को शामिल करने के लिए किया जा सकता है. context
प्रॉपर्टी में ये वैल्यू हो सकती हैं:
signin
(डिफ़ॉल्ट)signup
use

उदाहरण के लिए, context
को use
पर सेट करने पर, आपको यह मैसेज दिखेगा:

ब्राउज़र, साइन-अप और साइन-इन के इस्तेमाल के उदाहरणों को अलग-अलग तरीके से हैंडल करता है. यह इस बात पर निर्भर करता है कि खातों की सूची के एंडपॉइंट से मिले रिस्पॉन्स में approved_clients
मौजूद है या नहीं. अगर उपयोगकर्ता ने पहले ही आरपी के लिए साइन अप कर लिया है, तो ब्राउज़र, ".... जारी रखने के लिए" टेक्स्ट नहीं दिखाएगा.
providers
प्रॉपर्टी में IdentityProvider ऑब्जेक्ट का कलेक्शन होता है. इनमें ये प्रॉपर्टी होती हैं:
सेवा देने वाली कंपनियों की प्रॉपर्टी
providers
प्रॉपर्टी में IdentityProvider
ऑब्जेक्ट का कलेक्शन होता है. इन ऑब्जेक्ट में ये प्रॉपर्टी होती हैं:
प्रॉपर्टी | ब्यौरा |
---|---|
configURL (ज़रूरी) |
आईडीपी कॉन्फ़िगरेशन फ़ाइल का पूरा पाथ. |
clientId (ज़रूरी) |
आईडीपी से जारी किया गया आरपी का क्लाइंट आइडेंटिफ़ायर. |
loginHint (वैकल्पिक) |
खाते के एंडपॉइंट से दी गई login_hints वैल्यू में से किसी एक को चुनकर, FedCM डायलॉग चुनिंदा खाता दिखाता है. |
domainHint (वैकल्पिक) |
खाते के एंडपॉइंट से दी गई domain_hints वैल्यू में से किसी एक को चुनकर, FedCM डायलॉग चुनिंदा खाता दिखाता है. |
mode (वैकल्पिक) |
FedCM के यूज़र इंटरफ़ेस (यूआई) मोड की जानकारी देने वाली स्ट्रिंग. यह इनमें से कोई एक वैल्यू हो सकती है:
ध्यान दें: mode पैरामीटर, Chrome 132 से काम करता है.
|
fields (वैकल्पिक) |
स्ट्रिंग का कलेक्शन, जिसमें उपयोगकर्ता की वह जानकारी होती है ("name", " email", "picture") जिसे आरपी को आईडीपी से शेयर करना होता है. ध्यान दें: फ़ील्ड एपीआई, Chrome 132 और इसके बाद के वर्शन पर काम करता है. |
params (वैकल्पिक) |
कस्टम ऑब्जेक्ट, जो अन्य की-वैल्यू पैरामीटर तय करने की अनुमति देता है:
ध्यान दें: params , Chrome 132 से काम करता है.
|
ऐक्टिव मोड
FedCM, यूज़र एक्सपीरियंस (यूएक्स) मोड के अलग-अलग कॉन्फ़िगरेशन के साथ काम करता है. पैसिव मोड, डिफ़ॉल्ट मोड होता है. डेवलपर को इसे कॉन्फ़िगर करने की ज़रूरत नहीं होती.
ऐक्टिव मोड में FedCM का इस्तेमाल करने के लिए:
- उपयोगकर्ता के ब्राउज़र में सुविधा की उपलब्धता देखें.
- बटन पर क्लिक करने जैसे किसी छोटे से उपयोगकर्ता जेस्चर से एपीआई को ट्रिगर करें.
- एपीआई कॉल में
mode
पैरामीटर पास करें:
let supportsFedCmMode = false;
try {
navigator.credentials.get({
identity: Object.defineProperty(
// Check if this Chrome version supports the Mode API.
{}, 'mode', {
get: function () { supportsFedCmMode = true; }
}
)
});
} catch(e) {}
if (supportsFedCmMode) {
// The button mode is supported. Call the API with mode property:
return await navigator.credentials.get({
identity: {
providers: [{
configURL: 'https://idp.example/config.json',
clientId: '123',
}],
// The 'mode' value defines the UX mode of FedCM.
// - 'active': Must be initiated by user interaction (e.g., clicking a button).
// - 'passive': Can be initiated without direct user interaction.
mode: 'active'
}
});
}
ऐक्टिव मोड में कस्टम आइकॉन
ऐक्टिव मोड की मदद से, आईडीपी, आरपी के आधिकारिक लोगो आइकॉन को सीधे क्लाइंट मेटाडेटा एंडपॉइंट के जवाब में शामिल कर सकते हैं. आरपी को ब्रैंडिंग डेटा पहले से देना होगा.
क्रॉस-ओरिजिन iframe से FedCM को कॉल करना
अगर पैरंट फ़्रेम अनुमति देता है, तो identity-credentials-get
अनुमतियों की नीति का इस्तेमाल करके, क्रॉस-ऑरिजिन iframe में FedCM को शुरू किया जा सकता है. ऐसा करने के लिए, iframe टैग में allow="identity-credentials-get"
एट्रिब्यूट को इस तरह जोड़ें:
<iframe src="https://fedcm-cross-origin-iframe.glitch.me" allow="identity-credentials-get"></iframe>
इसे उदाहरण में देखा जा सकता है.
इसके अलावा, अगर पैरंट फ़्रेम को FedCM को कॉल करने के लिए ऑरिजिन पर पाबंदी लगानी है, तो अनुमति वाले ऑरिजिन की सूची के साथ Permissions-Policy
हेडर भेजें.
Permissions-Policy: identity-credentials-get=(self "https://fedcm-cross-origin-iframe.glitch.me")
अनुमतियों की नीति के काम करने के तरीके के बारे में ज़्यादा जानने के लिए, अनुमतियों की नीति की मदद से ब्राउज़र की सुविधाओं को कंट्रोल करना लेख पढ़ें.
Login Hint API
लॉगिन करने के लिए दिए गए सुझाव का इस्तेमाल करके, आरपी यह सुझाव दे सकता है कि उपयोगकर्ता को किस खाते से साइन इन करना चाहिए. यह उन उपयोगकर्ताओं के लिए पुष्टि करने में मददगार हो सकता है जिन्हें यह याद नहीं है कि उन्होंने पहले किस खाते का इस्तेमाल किया था.
आरपी, loginHint
प्रॉपर्टी के साथ navigator.credentials.get()
को ट्रिगर करके, किसी खास खाते को चुनिंदा तौर पर दिखा सकते हैं. इसके लिए, खातों की सूची वाले एंडपॉइंट से फ़ेच की गई login_hints
वैल्यू में से किसी एक का इस्तेमाल किया जाता है. इस बारे में, नीचे दिए गए कोड सैंपल में बताया गया है:
return await navigator.credentials.get({
identity: {
providers: [{
configURL: 'https://idp.example/manifest.json',
clientId: '123',
// Accounts endpoint can specify a 'login_hints' array for an account.
// When RP specifies a 'exampleHint' value, only those accounts will be
// shown to the user whose 'login_hints' array contains the 'exampleHint'
// value
loginHint : 'exampleHint'
}]
}
});
जब कोई भी खाता loginHint
से मेल नहीं खाता है, तो FedCM डायलॉग बॉक्स में लॉगिन करने का अनुरोध दिखता है. इससे उपयोगकर्ता, आरपी के अनुरोध किए गए हिंट से मैच करने वाले आईडीपी खाते में लॉगिन कर सकता है. जब उपयोगकर्ता प्रॉम्प्ट पर टैप करता है, तो config फ़ाइल में बताए गए लॉगिन यूआरएल के साथ एक पॉप-अप विंडो खुलती है. इसके बाद, लिंक में लॉगिन के लिए दिए गए हिंट और डोमेन के लिए दिए गए हिंट के क्वेरी पैरामीटर जोड़ दिए जाते हैं.
Domain Hint API
आरपी, सिर्फ़ किसी खास डोमेन से जुड़े खातों को चुनिंदा तौर पर दिखा सकते हैं. यह उन आरपी के लिए फ़ायदेमंद हो सकता है जो किसी कॉर्पोरेट डोमेन तक ही सीमित हैं.
सिर्फ़ खास डोमेन खाते दिखाने के लिए, आरपी को navigator.credentials.get()
को domainHint
प्रॉपर्टी के साथ कॉल करना चाहिए. इसके लिए, domain_hints
की वैल्यू में से किसी एक को खातों की सूची वाले एंडपॉइंट से फ़ेच किया जाना चाहिए. इसका उदाहरण नीचे दिए गए कोड सैंपल में दिया गया है:
return await navigator.credentials.get({
identity: {
providers: [{
configURL: 'https://idp.example/manifest.json',
clientId: 'abc',
// Accounts endpoint can specify a 'domain_hints' array for an account.
// When RP specifies a '@domain.example' value, only those accounts will be
// shown to the user whose 'domain_hints' array contains the
// '@domain.example' value
domainHint : '@domain.example'
}]
}
});
जब कोई भी खाता domainHint
से मेल नहीं खाता है, तो FedCM डायलॉग बॉक्स में लॉगिन करने का अनुरोध दिखता है. इससे उपयोगकर्ता, आरपी के अनुरोध किए गए हिंट से मैच करने वाले आईडीपी खाते में लॉगिन कर सकता है. जब उपयोगकर्ता प्रॉम्प्ट पर टैप करता है, तो config फ़ाइल में बताए गए लॉगिन यूआरएल के साथ एक पॉप-अप विंडो खुलती है. इसके बाद, लिंक में लॉगिन के लिए दिए गए हिंट और डोमेन के लिए दिए गए हिंट के क्वेरी पैरामीटर जोड़ दिए जाते हैं.

domainHint
से मैच करने वाला कोई खाता न होने पर, लॉगिन प्रॉम्प्ट का उदाहरणकस्टम पैरामीटर
कस्टम पैरामीटर की सुविधा की मदद से, आरपी आईडी एश्योरेशन एंडपॉइंट को अतिरिक्त की-वैल्यू पैरामीटर दे सकता है. Parameters API की मदद से, आरपी, IdP को अतिरिक्त पैरामीटर भेज सकते हैं. इससे, वे बुनियादी साइन-इन के अलावा, संसाधनों के लिए अनुमतियों का अनुरोध कर सकते हैं. अतिरिक्त पैरामीटर पास करने से, इन स्थितियों में मदद मिल सकती है:
- आरपी को डाइनैमिक तौर पर, आईडीपी के पास मौजूद अतिरिक्त अनुमतियों का अनुरोध करना होगा. जैसे, बिलिंग पता या कैलेंडर का ऐक्सेस. उपयोगकर्ता, जारी रखें सुविधा का इस्तेमाल करके लॉन्च किए गए, आईडीपी के कंट्रोल वाले यूज़र एक्सपीरियंस फ़्लो की मदद से, इन अनुमतियों को अनुमति दे सकता है. इसके बाद, आईडीपी यह जानकारी शेयर करेगा.
एपीआई का इस्तेमाल करने के लिए, आरपी navigator.credentials.get()
कॉल में ऑब्जेक्ट के तौर पर params
प्रॉपर्टी में पैरामीटर जोड़ता है:
let {token} = await navigator.credentials.get({
identity: {
providers: [{
clientId: '1234',
configURL: 'https://idp.example/fedcm.json',
// Key/value pairs that need to be passed from the
// RP to the IdP but that don't really play any role with
// the browser.
params: {
IDP_SPECIFIC_PARAM: '1',
foo: 'BAR'
}
},
}
});
ब्राउज़र, इसे अपने-आप IdP के लिए POST अनुरोध में बदल देगा. इसमें पैरामीटर, यूआरएल से कोड में बदले गए JSON-सीरियलाइज़ किए गए ऑब्जेक्ट के तौर पर होंगे:
// The assertion endpoint is drawn from the config file
POST /fedcm_assertion_endpoint HTTP/1.1
Host: idp.example
Origin: https://rp.example/
Content-Type: application/x-www-form-urlencoded
Cookie: 0x23223
Sec-Fetch-Dest: webidentity
// params are translated into urlencoded version of `{"IDP_SPECIFIC_PARAM":"1","foo":"bar"}`
account_id=123&client_id=client1234¶ms=%22%7B%5C%22IDP_SPECIFIC_PARAM%5C%22%3A1%2C%5C%22foo%5C%22%3A%5C%22BAR%5C%22%7D%22.
अगर आरपी को किसी और अनुमति की ज़रूरत है, तो आईडीपी उसे रीडायरेक्ट करने वाला लिंक दे सकता है. उदाहरण के लिए, node.js में:
if (rpRequestsPermissions) {
// Response with a URL if the RP requests additional permissions
return res.json({
continue_on: '/example-redirect',
});
}
फ़ील्ड
आरपी, उपयोगकर्ता की वह जानकारी तय कर सकता है जिसे उसे आईडीपी से शेयर करना है. इसमें नाम, ईमेल पता, और प्रोफ़ाइल फ़ोटो का कोई भी कॉम्बिनेशन शामिल हो सकता है. अनुरोध की गई जानकारी, FedCM डायलॉग के 'जानकारी ज़ाहिर करना' यूज़र इंटरफ़ेस (यूआई) में शामिल की जाएगी. उपयोगकर्ता को एक मैसेज दिखेगा, जिसमें बताया जाएगा कि अगर वह साइन इन करता है, तो idp.example
, अनुरोध की गई जानकारी को rp.example
के साथ शेयर करेगा.

फ़ील्ड की सुविधा का इस्तेमाल करने के लिए, आरपी को navigator.credentials.get()
कॉल में fields
कलेक्शन जोड़ना चाहिए. फ़ील्ड में name
, email
, और picture
के किसी भी क्रम का इस्तेमाल किया जा सकता है. आने वाले समय में, इसमें और वैल्यू शामिल की जा सकती हैं.
fields
वाला अनुरोध कुछ ऐसा दिखेगा:
let { token } = await navigator.credentials.get({
identity: {
providers: [{
// RP requests the IdP to share only user email and profile picture
fields: [ 'email', 'picture'],
clientId: '1234',
configURL: 'https://idp.example/fedcm.json',
},
}
});
ब्राउज़र, इसे अपने-आप आईडी एश्योरेंस एंडपॉइंट पर एचटीटीपी अनुरोध में बदल देगा. इसमें आरपी के तय किए गए fields
पैरामीटर के साथ-साथ वे फ़ील्ड शामिल होंगे जिन्हें ब्राउज़र ने disclosure_shown_for
पैरामीटर में उपयोगकर्ता को दिखाया था. पुराने वर्शन के साथ काम करने के लिए, ब्राउज़र disclosure_text_shown=true
भी भेजेगा. ऐसा तब होगा, जब जानकारी ज़ाहिर करने वाला टेक्स्ट दिखाया गया हो और अनुरोध किए गए फ़ील्ड में तीनों फ़ील्ड शामिल हों: 'name'
, 'email'
, और 'picture'
.
POST /id_assertion_endpoint HTTP/1.1
Host: idp.example
Origin: https://rp.example/
Content-Type: application/x-www-form-urlencoded
Cookie: 0x23223
Sec-Fetch-Dest: webidentity
// The RP only requested to share email and picture. The browser will send `disclosure_text_shown=false`, as the 'name' field value is missing
account_id=123&client_id=client1234&disclosure_text_shown=false&fields=email,picture&disclosure_shown_for=email,picture
अगर fields
एक खाली कलेक्शन है, तो उपयोगकर्ता एजेंट, जानकारी ज़ाहिर करने वाला यूज़र इंटरफ़ेस (यूआई) स्किप कर देगा.

ऐसा तब भी होता है, जब accounts endpoint के रिस्पॉन्स में ऐसा क्लाइंट आईडी न हो जो approved_clients
में मौजूद आरपी से मेल खाता हो.
इस मामले में, आईडी एश्योरेशन एंडपॉइंट पर भेजा गया disclosure_text_shown
, एचटीटीपी बॉडी में गलत है:
POST /id_assertion_endpoint HTTP/1.1
Host: idp.example
Origin: https://rp.example/
Content-Type: application/x-www-form-urlencoded
Cookie: 0x23223
Sec-Fetch-Dest: webidentity
account_id=123&client_id=client1234&nonce=234234&disclosure_text_shown=false
गड़बड़ी का मैसेज दिखाना
कभी-कभी, आईडीपी सही वजहों से टोकन जारी नहीं कर पाता. जैसे, जब क्लाइंट के पास अनुमति न हो या सर्वर कुछ समय के लिए उपलब्ध न हो. अगर आईडीपी (IdP) "गड़बड़ी" वाला जवाब देता है, तो आरपी (RP) उसे पकड़ सकता है. साथ ही, Chrome, आईडीपी (IdP) से मिली गड़बड़ी की जानकारी के साथ ब्राउज़र यूज़र इंटरफ़ेस (यूआई) दिखाकर, उपयोगकर्ता को सूचना दे सकता है.

try {
const cred = await navigator.credentials.get({
identity: {
providers: [
{
configURL: 'https://idp.example/manifest.json',
clientId: '1234',
},
],
}
});
} catch (e) {
const code = e.code;
const url = e.url;
}
शुरुआती पुष्टि के बाद, उपयोगकर्ताओं की पुष्टि अपने-आप हो जाए
FedCM की मदद से, अपने-आप फिर से पुष्टि करने की सुविधा ("अपने-आप फिर से पुष्टि करने की सुविधा") की मदद से, उपयोगकर्ता अपने-आप फिर से पुष्टि कर सकते हैं. उपयोगकर्ता को अपने-आप फिर से पुष्टि करने के लिए, ये शर्तें पूरी होनी चाहिए:
- उपयोगकर्ता ने पहले FedCM का इस्तेमाल करके, शुरुआती पुष्टि की हो. यहां "शुरुआती पुष्टि" का मतलब है कि उपयोगकर्ता ने एक ही ब्राउज़र इंस्टेंस पर, FedCM के साइन-इन डायलॉग में "इसी तौर पर जारी रखें..." बटन पर टैप करके, आरपी की वेबसाइट पर खाता बनाया है या साइन इन किया है.
- उपयोगकर्ता के पास सिर्फ़ एक ऐसा खाता है जिसका इस्तेमाल वह पहले भी कर चुका है. अगर एक से ज़्यादा आईडीपी के लिए, वापस आने वाले खाते मौजूद हैं, तो उपयोगकर्ता की पुष्टि अपने-आप नहीं होगी.
उपयोगकर्ता के लिए साफ़ तौर पर जानकारी देने की सुविधा, ट्रैकिंग को रोकने के लिए फ़ेडरेटेड खाता बनाने से पहले काम की होती है. ट्रैकिंग रोकना, FedCM का एक मुख्य लक्ष्य है. हालांकि, उपयोगकर्ता के एक बार जानकारी देने के बाद, उसे फिर से जानकारी देने के लिए कहना ज़रूरी नहीं है. उपयोगकर्ता के RP और IdP के बीच कम्यूनिकेशन की अनुमति देने के बाद, किसी ऐसी जानकारी के लिए फिर से साफ़ तौर पर जानकारी देने के लिए कहना, निजता या सुरक्षा के लिहाज़ से फ़ायदेमंद नहीं होता जिसकी पुष्टि उपयोगकर्ता ने पहले ही कर दी है.
अपने-आप फिर से पुष्टि करने की सुविधा की मदद से, ब्राउज़र अपने व्यवहार में बदलाव करता है. यह बदलाव, navigator.credentials.get()
को कॉल करते समय mediation
के लिए बताए गए विकल्प के आधार पर होता है.
const cred = await navigator.credentials.get({
identity: {
providers: [{
configURL: 'https://idp.example/fedcm.json',
clientId: '1234',
}],
},
mediation: 'optional', // this is the default
});
// `isAutoSelected` is `true` if auto-reauthn was performed.
const isAutoSelected = cred.isAutoSelected;
mediation
, Credential Management API में मौजूद एक प्रॉपर्टी है. यह PasswordCredential और FederatedCredential के लिए ठीक उसी तरह काम करती है जिस तरह यह PublicKeyCredential के साथ कुछ हद तक ही काम करती है. इस प्रॉपर्टी में ये चार वैल्यू इस्तेमाल की जा सकती हैं:
'optional'
(डिफ़ॉल्ट): अगर मुमकिन हो, तो अपने-आप फिर से पुष्टि होने की सुविधा चालू करें. अगर ऐसा नहीं है, तो मीडिएशन की ज़रूरत होगी. हमारा सुझाव है कि आप साइन-इन पेज पर यह विकल्प चुनें.'required'
: आगे बढ़ने के लिए, हमेशा मीडिएशन की ज़रूरत होती है. उदाहरण के लिए, यूज़र इंटरफ़ेस (यूआई) पर "जारी रखें" बटन पर क्लिक करना. यह विकल्प तब चुनें, जब आपके उपयोगकर्ताओं को हर बार पुष्टि कराने के लिए, साफ़ तौर पर अनुमति देनी पड़े.'silent'
: अगर हो सके, तो अपने-आप फिर से पुष्टि करें. अगर ऐसा नहीं हो पाता है, तो बिना किसी मध्यस्थता के चुपचाप फ़ेल हो जाएं. हमारा सुझाव है कि इस विकल्प को साइन इन करने के लिए बने पेज के अलावा, उन पेजों पर चुनें जहां आपको उपयोगकर्ताओं को साइन इन रखना है. उदाहरण के लिए, शिपिंग वेबसाइट पर आइटम पेज या समाचार वेबसाइट पर लेख पेज.'conditional'
: इसका इस्तेमाल WebAuthn के लिए किया जाता है. फ़िलहाल, यह FedCM के लिए उपलब्ध नहीं है.
इस कॉल के साथ, अपने-आप फिर से पुष्टि करने की सुविधा इन स्थितियों में होती है:
- FedCM का इस्तेमाल किया जा सकता है. उदाहरण के लिए, उपयोगकर्ता ने सेटिंग में जाकर, FedCM को पूरी तरह से बंद नहीं किया है या आरपी के लिए बंद नहीं किया है.
- उपयोगकर्ता ने इस ब्राउज़र पर वेबसाइट में साइन इन करने के लिए, FedCM API के साथ सिर्फ़ एक खाते का इस्तेमाल किया.
- उपयोगकर्ता ने उस खाते से IdP में साइन इन किया हो.
- पिछले 10 मिनट में, अपने-आप फिर से पुष्टि नहीं हुई.
- पिछले साइन इन के बाद, आरपी ने
navigator.credentials.preventSilentAccess()
को कॉल नहीं किया है.
इन शर्तों के पूरा होने पर, FedCM navigator.credentials.get()
का इस्तेमाल करने के बाद, उपयोगकर्ता की पुष्टि अपने-आप होने की प्रोसेस शुरू हो जाती है.
mediation: optional
होने पर, अपने-आप फिर से पुष्टि करने की सुविधा उपलब्ध न हो सकती. ऐसा उन वजहों से हो सकता है जिनके बारे में सिर्फ़ ब्राउज़र को पता होता है. आरपी, isAutoSelected
प्रॉपर्टी की जांच करके यह पता लगा सकता है कि अपने-आप फिर से पुष्टि करने की सुविधा चालू है या नहीं.
इससे एपीआई की परफ़ॉर्मेंस का आकलन करने और यूज़र एक्सपीरियंस को बेहतर बनाने में मदद मिलती है.
साथ ही, अगर यह उपलब्ध नहीं है, तो उपयोगकर्ता को साफ़ तौर पर उपयोगकर्ता मीडिएशन की मदद से साइन इन करने के लिए कहा जा सकता है. यह mediation: required
वाला फ़्लो है.
preventSilentAccess()
की मदद से मीडिएशन लागू करना
उपयोगकर्ताओं के साइन आउट करने के तुरंत बाद, अपने-आप पुष्टि करने की सुविधा से, उपयोगकर्ताओं को बेहतर अनुभव नहीं मिलेगा. इसलिए, FedCM में अपने-आप फिर से पुष्टि होने के बाद, 10 मिनट तक कोई गतिविधि नहीं होती. इससे, इस तरह की गतिविधि को रोका जा सकता है. इसका मतलब है कि अपने-आप फिर से पुष्टि करने की सुविधा, हर 10 मिनट में ज़्यादा से ज़्यादा एक बार काम करती है. हालांकि, अगर उपयोगकर्ता 10 मिनट के अंदर साइन इन करता है, तो यह सुविधा काम नहीं करती. जब कोई उपयोगकर्ता आरपी से साइन आउट करता है, तो आरपी को navigator.credentials.preventSilentAccess()
को कॉल करके, ब्राउज़र से अपने-आप फिर से पुष्टि करने की सुविधा को बंद करने का अनुरोध करना चाहिए. उदाहरण के लिए, साइन आउट बटन पर क्लिक करके.
function signout() {
navigator.credentials.preventSilentAccess();
location.href = '/signout';
}
उपयोगकर्ता, सेटिंग में जाकर अपने-आप फिर से पुष्टि होने की सुविधा से ऑप्ट-आउट कर सकते हैं
उपयोगकर्ता, सेटिंग मेन्यू में जाकर, अपने-आप फिर से पुष्टि होने की सुविधा से ऑप्ट-आउट कर सकते हैं:
- डेस्कटॉप पर Chrome में,
chrome://password-manager/settings
> अपने-आप साइन इन करें पर जाएं. - Android के Chrome पर, सेटिंग > Password Manager खोलें > सबसे ऊपर दाएं कोने में मौजूद ऐप्लिकेशन के आइकॉन पर टैप करें > अपने-आप साइन इन करें पर टैप करें.
टॉगल को बंद करके, उपयोगकर्ता अपने-आप फिर से पुष्टि करने की सुविधा से पूरी तरह ऑप्ट-आउट कर सकता है. अगर उपयोगकर्ता ने Chrome इंस्टेंस पर किसी Google खाते में साइन इन किया हुआ है और सिंक करने की सुविधा चालू है, तो यह सेटिंग सभी डिवाइसों पर सेव और सिंक की जाती है.
आईडीपी को आरपी से डिसकनेक्ट करना
अगर किसी उपयोगकर्ता ने पहले FedCM के ज़रिए आईडीपी का इस्तेमाल करके आरपी में साइन इन किया है, तो ब्राउज़र, कनेक्ट किए गए खातों की सूची के तौर पर, इस संबंध को स्थानीय तौर पर सेव कर लेता है. आरपी, IdentityCredential.disconnect()
फ़ंक्शन को शुरू करके डिसकनेक्ट कर सकता है. इस फ़ंक्शन को टॉप-लेवल आरपी फ़्रेम से कॉल किया जा सकता है. आरपी को configURL
पास करना होगा, जो आईडीपी के तहत इस्तेमाल किया जाने वाला clientId
है. साथ ही, आईडीपी को डिसकनेक्ट करने के लिए 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 के ज़रिए आईडीपी का इस्तेमाल करके, आरपी में साइन इन नहीं किया है.
- एपीआई को iframe में से कॉल किया जाता है. इसके लिए, FedCM की अनुमतियों की नीति का इस्तेमाल नहीं किया जाता.
- configURL अमान्य है या डिसकनेक्ट एंडपॉइंट मौजूद नहीं है.
- कॉन्टेंट की सुरक्षा के लिए नीति (सीएसपी) की जांच पूरी नहीं हो पाती.
- खाता बंद करने का अनुरोध स्वीकार नहीं किया गया है.
- उपयोगकर्ता ने ब्राउज़र की सेटिंग में जाकर, FedCM को बंद कर दिया हो.
जब IdP का डिसकनेक्ट एंडपॉइंट कोई जवाब देता है, तो ब्राउज़र पर RP और IdP डिसकनेक्ट हो जाते हैं और वादा पूरा हो जाता है. डिसकनेक्ट किए गए खातों के आईडी, disconnect एंडपॉइंट से मिले रिस्पॉन्स में दिए गए होते हैं.