पब्लिश किया गया: 19 अगस्त, 2025
WebAuthn की मदद से तुरंत मध्यस्थता करने की सुविधा, वेब की एक नई सुविधा है. इसे उपयोगकर्ताओं के साइन-इन फ़्लो को बेहतर बनाने के लिए डिज़ाइन किया गया है. इस ओरिजिन ट्रायल में, इस सुविधा के बारे में खास जानकारी दी गई है. साथ ही, इसके फ़ायदों और इसे लागू करने के बारे में बताया गया है. इसमें आपको हिस्सा लेने और वेब ऑथेंटिकेशन को बेहतर बनाने में मदद करने का न्योता दिया गया है.
बैकग्राउंड
वेब पर पुष्टि करने की प्रोसेस में अक्सर रुकावटें आती हैं. इससे उपयोगकर्ता के लिए साइन इन करना मुश्किल हो जाता है. मौजूदा WebAuthn फ़्लो, "साइन इन करें" बटन के साथ काम करने में मुश्किलों का सामना करते हैं. ऐसा खास तौर पर तब होता है, जब क्रेडेंशियल तुरंत उपलब्ध नहीं होते. इससे स्टैंडर्ड फ़ॉर्म फ़ॉलबैक हो जाते हैं.
इस नई सुविधा में, आसानी से साइन इन करने की सुविधा दी गई है. यह सुविधा, मोबाइल पर preferImmediatelyAvailableCredentials
एपीआई की तरह काम करती है. यह साइन-इन की प्रोसेस को आसान बनाता है. साथ ही, यह अक्सर स्टैंडर्ड लॉगिन फ़ॉर्म से पहले दिखता है. इससे उपयोगकर्ताओं को बेहतर अनुभव मिलता है.
यह कैसे काम करता है
WebAuthn की मदद से, सीधे और आसानी से साइन-इन किया जा सकता है. इससे ब्राउज़र को उपलब्ध क्रेडेंशियल तुरंत ऑफ़र करने या क्रॉस-डिवाइस या सुरक्षा कुंजी से पुष्टि करने के लिए कहे बिना, उनकी अनुपस्थिति के बारे में तुरंत सूचना देने की अनुमति मिलती है. इससे डेवलपर के लिए इसे लागू करना आसान हो जाता है.
immediate
मध्यस्थता का टाइप
हम navigator.credentials.get()
अनुरोधों के लिए, immediate
मीडिएशन टाइप लॉन्च कर रहे हैं. इस विकल्प को सेट करने पर, अगर स्थानीय तौर पर उपलब्ध क्रेडेंशियल नहीं मिलते हैं, तो प्रॉमिस NotAllowedError
के साथ अस्वीकार कर देता है. अगर क्रेडेंशियल मौजूद हैं, तो ब्राउज़र पुष्टि करने की प्रोसेस को सामान्य तरीके से हैंडल करता है.
इस सुविधा की मदद से, साइटें साइन-इन करने के फ़्लो को बदल सकती हैं. साथ ही, क्रेडेंशियल तुरंत उपलब्ध न होने पर, साइन-इन करने के अन्य तरीके उपलब्ध करा सकती हैं.
सबसे अहम बात यह है कि ब्राउज़र अब भी NotAllowedError
दिखा सकते हैं, ताकि उपयोगकर्ता की निजता और सुरक्षा बनी रहे. इससे फ़िंगरप्रिंटिंग या ट्रैकिंग जैसी समस्याओं को रोका जा सकता है.
सुविधा का पता लगाना
PublicKeyCredential.getClientCapabilities()
का इस्तेमाल करके, यह पता लगाया जा सकता है कि क्या तुरंत मध्यस्थता की सुविधा उपलब्ध है. डेवलपर, लौटाए गए capabilities
ऑब्जेक्ट पर immediateGet
की सुविधा की जांच कर सकते हैं.
async function checkImmediateMediationAvailability() {
try {
const capabilities = await PublicKeyCredential.getClientCapabilities();
if (capabilities.immediateGet && window.PasswordCredential) {
console.log("Immediate Mediation with passwords supported.");
} else if (capabilities.immediateGet) {
console.log("Immediate Mediation without passwords supported.");
} else { console.log("Immediate Mediation unsupported."); }
} catch (error) {
console.error("Error getting client capabilities:", error);
}
}
ध्यान दें: ज़्यादा ब्राउज़र पर काम करने में मदद करने के लिए, WebAuthn Polyfills GitHub रिपॉज़िटरी से getClientCapabilities()
के लिए पॉलीफ़िल उपलब्ध है.
लागू करने का उदाहरण
एपीआई का इस्तेमाल करने के लिए, mediation:
'immediate'
के साथ navigator.credentials.get()
को कॉल करें. हमारा सुझाव है कि अनुरोध में password: true
को शामिल करें, क्योंकि ज़्यादातर उपयोगकर्ताओं ने आज अपना पासवर्ड सेव किया हुआ है. इसलिए, उन्हें इस सुविधा का तुरंत फ़ायदा मिल सकता है.
button.addEventListener('click', async (event) => {
event.preventDefault();
event.stopPropagation();
const cred = await navigator.credentials.get({
password: true,
publicKey: {
challenge, // Your server-generated challenge
rpId: 'example.com' // Your Relying Party ID
},
mediation: 'immediate',
});
});
डेवलपर को catch
को catch
ब्लॉक में हैंडल करना चाहिए, ताकि साइन-इन करने के लिए एक ग्रेसफ़ुल फ़ॉलबैक अनुभव मिल सके.NotAllowedError
तुरंत मध्यस्थता के लिए सिलसिलेवार निर्देश
WebAuthn की मीडिएशन सुविधा, उपयोगकर्ता के साइन-इन करने की प्रोसेस को आसान बनाने के लिए, दो मुख्य इस्तेमाल के उदाहरणों के साथ काम करती है: "पासकी से साइन इन करें" बटन को चालू करना. इससे फ़ॉलबैक के अवांछित विकल्पों को छिपाया जाता है. साथ ही, डाइनैमिक साइन-इन फ़्लो को आसान बनाना. इससे उपयोगकर्ता के लिए ज़रूरी कार्रवाई से पहले ही क्रेडेंशियल उपलब्ध कराए जाते हैं.
इस्तेमाल का पहला उदाहरण: साइन-इन बटन की मदद से साफ़ तौर पर साइन इन करना
इस स्थिति में, साइन-इन करने के लिए एक बटन दिया जाता है. इससे यह पक्का किया जाता है कि उपयोगकर्ता को बिना किसी रुकावट के अच्छा अनुभव मिले. इसके लिए, उन्हें अचानक दिखने वाले प्रॉम्प्ट या साइन-इन पेज पर जाने की ज़रूरत नहीं होती.
- उपयोगकर्ता साइन-इन करता है: उपयोगकर्ता "साइन इन करें" बटन पर क्लिक करता है. इसके बाद, भरोसा करने वाली पार्टी
mediation: "immediate"
का इस्तेमाल करकेnavigator.credentials.get()
को कॉल करती है. - ब्राउज़र, क्रेडेंशियल चुनने के लिए प्रॉम्प्ट दिखाता है (अगर उपलब्ध हो): ब्राउज़र, स्थानीय तौर पर उपलब्ध पासकी या अनुरोध किए गए पासवर्ड की जांच करता है. अगर इसे कोई खाता मिलता है, तो यह तुरंत उपयोगकर्ता को एक मोडल यूज़र इंटरफ़ेस (यूआई) दिखाता है, ताकि वह कोई खाता चुन सके. खातों को, पिछली बार इस्तेमाल किए जाने के टाइमस्टैंप के हिसाब से रैंक किया जाता है. इसके बाद, उन्हें वर्णमाला के क्रम में लगाया जाता है. ध्यान दें: अगर एक ही खाते के लिए, कई पासवर्ड मैनेजर में पासवर्ड और पासकी, दोनों सेव हैं, तो ब्राउज़र पासकी को प्राथमिकता देता है. जब एक ही खाते के लिए अलग-अलग प्रोवाइडर की कई पासकी मौजूद होती हैं, तो सबसे हाल ही में इस्तेमाल की गई पासकी को प्राथमिकता दी जाती है.
- साइन-इन की प्रोसेस पूरी होने पर: उपयोगकर्ता, ब्राउज़र के यूज़र इंटरफ़ेस (यूआई) से पासकी चुनता है. अगर ब्राउज़र को पुष्टि करने की ज़रूरत होती है, तो वह उपयोगकर्ता को पहले से सेट अप किए गए तरीके (जैसे कि पिन, बायोमेट्रिक इनपुट या पैटर्न) का इस्तेमाल करके अपनी पहचान की पुष्टि करने के लिए कहता है. साइन इन की प्रोसेस पूरी हो जाती है.
- फ़ॉलबैक पाथ: पासकी उपलब्ध न होना या उपयोगकर्ता का ब्राउज़र यूज़र इंटरफ़ेस (यूआई) को खारिज करना: अगर साइट के लिए कोई लोकल पासकी या अनुरोध किया गया पासवर्ड उपलब्ध नहीं है या उपयोगकर्ता ब्राउज़र यूज़र इंटरफ़ेस (यूआई) को खारिज करता है, तो ब्राउज़र, भरोसेमंद पार्टी को
NotAllowedError
भेजता है. साथ ही, ब्राउज़र, क्रॉस-डिवाइस या सुरक्षा कुंजी के विकल्पों के लिए कोई यूज़र इंटरफ़ेस (यूआई) नहीं दिखाता है. इसके बाद, भरोसा करने वाली पार्टी अपने स्टैंडर्ड साइन-इन पेज पर जा सकती है या पुष्टि करने के अन्य तरीके उपलब्ध करा सकती है.
इस्तेमाल का दूसरा उदाहरण: उपयोगकर्ता की कार्रवाई से पहले, इंप्लिसिट साइन-इन फ़्लो
इस सुविधा की मदद से, उपयोगकर्ता को साइन इन करने का बेहतर अनुभव मिलता है. इसमें उपयोगकर्ता को पासकी और पासवर्ड का विकल्प तब ही मिल जाता है, जब वह कोई ऐसी कार्रवाई करता है जिसके लिए पुष्टि की गई स्थिति की ज़रूरत होती है. जैसे, चेक आउट करना.
- उपयोगकर्ता ऐसी कार्रवाई शुरू करता है जिसके लिए साइन इन करना ज़रूरी है: उपयोगकर्ता किसी ऐसी कार्रवाई के लिए बटन पर क्लिक करता है जिसके लिए उसे साइन इन करना ज़रूरी है. उदाहरण के लिए, "चेकआउट करें" बटन. इसके बाद, भरोसा करने वाली पार्टी
navigator.credentials.get()
कोmediation: "immediate"
के साथ कॉल करती है. ब्राउज़र, क्रेडेंशियल चुनने के लिए प्रॉम्प्ट दिखाता है (अगर उपलब्ध हो): ब्राउज़र, डिवाइस पर उपलब्ध पासकी या पासवर्ड की जांच करता है. अगर सिस्टम को ऐसे खाते मिलते हैं, तो वह तुरंत उपयोगकर्ता को एक मोडल यूज़र इंटरफ़ेस (यूआई) दिखाता है, ताकि वह कोई खाता चुन सके. खातों को इस क्रम में रैंक किया जाता है: सबसे पहले, आखिरी बार इस्तेमाल किए गए टाइमस्टैंप के हिसाब से, फिर वर्णमाला के क्रम में. इसके बाद, डुप्लीकेट खातों को हटा दिया जाता है, ताकि हर खाते के लिए सिर्फ़ एक एंट्री दिखे. ध्यान दें: जब एक ही खाते के लिए, कई Password Manager से पासवर्ड और पासकोड, दोनों मिलते हैं, तो ब्राउज़र पासकोड को प्राथमिकता देता है. जब एक ही खाते के लिए, अलग-अलग प्रोवाइडर की कई पासकी मौजूद होती हैं, तो सबसे हाल ही में इस्तेमाल की गई पासकी को प्राथमिकता दी जाती है.
सफलतापूर्वक साइन-इन करना: उपयोगकर्ता, ब्राउज़र के यूज़र इंटरफ़ेस (यूआई) से क्रेडेंशियल चुनता है. अगर ब्राउज़र को पुष्टि करने की ज़रूरत होती है, तो वह उपयोगकर्ता को पहले से सेट किए गए तरीके (जैसे कि पिन, बायोमेट्रिक इनपुट या पैटर्न) का इस्तेमाल करके अपनी पहचान की पुष्टि करने के लिए कहता है. साइन इन की प्रोसेस पूरी हो जाती है.
फ़ॉलबैक पाथ: कोई क्रेडेंशियल नहीं है या उपयोगकर्ता ने ब्राउज़र यूज़र इंटरफ़ेस (यूआई) को खारिज कर दिया है: अगर साइट के लिए कोई स्थानीय क्रेडेंशियल उपलब्ध नहीं है या उपयोगकर्ता ने ब्राउज़र यूज़र इंटरफ़ेस (यूआई) को खारिज कर दिया है, तो ब्राउज़र, भरोसा करने वाली पार्टी को
NotAllowedError
भेजता है. साथ ही, ब्राउज़र कोई यूज़र इंटरफ़ेस (यूआई) नहीं दिखाता है. उपयोगकर्ता के साइन-इन करने के तरीके में आज से कोई बदलाव नहीं होगा. इसके बाद, Relying Party उपयोगकर्ता से ज़्यादा जानकारी (उदाहरण के लिए, ईमेल पता) मांग सकती है. इसके अलावा, पुष्टि करने के अन्य तरीके दिखा सकती है. जैसे, पासवर्ड फ़ॉर्म, एसएमएस से पुष्टि करना या WebAuthn मोडल अनुरोध. यह अनुरोध, अलग-अलग डिवाइसों पर पुष्टि करने की सुविधा देने वाले ऐप्लिकेशन के साथ काम करता है.
फ़ायदे
WebAuthn की मदद से तुरंत मध्यस्थता करने की सुविधा से, डेवलपर और उपयोगकर्ताओं को कई अहम फ़ायदे मिलते हैं:
- आसान साइन-इन: इससे उन उपयोगकर्ताओं को आसानी से साइन-इन करने में मदद मिलती है जिनके पास तुरंत उपलब्ध पासकी या पासवर्ड हैं. ये पासकी या पासवर्ड, उनके ब्राउज़र या Password Manager में सेव होते हैं.
- इंटेलिजेंट साइन-इन: जब उपयोगकर्ता को ऐसी गतिविधियां करनी होती हैं जिनके लिए साइन इन करना ज़रूरी है, तब एपीआई साइन-इन की सुविधा चालू कर देता है. ये, उपयोगकर्ता के क्रेडेंशियल की स्थिति के हिसाब से अपने-आप बदल जाते हैं. इससे, जब भी मुमकिन हो, तुरंत पुष्टि की जा सकती है. साथ ही, इससे अनचाहे रीडायरेक्ट से बचा जा सकता है और प्रोसेस को आसान बनाया जा सकता है.
- क्रेडेंशियल को बेहतर तरीके से मैनेज करना: जब एक ही खाते के लिए कई पासवर्ड मैनेजर क्रेडेंशियल उपलब्ध कराते हैं, तो ब्राउज़र सबसे सही विकल्प को चुनता है. इससे उपयोगकर्ताओं के लिए क्रेडेंशियल को मैनेज करना आसान हो जाता है.
- उपयोगकर्ताओं के बीच भ्रम कम होना: इस सुविधा के तहत, उपयोगकर्ताओं को सीधे तौर पर उनके सेव किए गए क्रेडेंशियल दिखाए जाते हैं. इससे, उपयोगकर्ताओं के बीच भ्रम कम होता है. ऐसा अक्सर, साइन इन करने के कई विकल्पों या स्टैंडर्ड फ़ॉर्म से जुड़ा होता है.
- आसानी से फ़ॉलबैक करने की सुविधा: इससे यह पक्का किया जाता है कि जिन उपयोगकर्ताओं के पास तुरंत क्रेडेंशियल नहीं हैं वे स्टैंडर्ड साइन-इन पेजों पर आसानी से फ़ॉलबैक कर सकें. इसका मतलब है कि मौजूदा फ़्लो में उनके अनुभव में कोई बदलाव नहीं होता है.
निजता और सुरक्षा
WebAuthn की मीडिएशन सुविधा की मदद से साइटें, तुरंत उपलब्ध क्रेडेंशियल की पहचान कर सकती हैं. ऐसा तब किया जाता है, जब कोई उपयोगकर्ता साइन इन करने की कोशिश को साफ़ तौर पर अनुमति देता है. उपयोगकर्ता की निजता को सुरक्षित रखने और संभावित गलत इस्तेमाल को रोकने के लिए, हम कई ज़रूरी कदम उठाते हैं:
- उपयोगकर्ता के जेस्चर की ज़रूरत: एपीआई कॉल के लिए, उपयोगकर्ता के जेस्चर (उपयोगकर्ता की कोई भी गतिविधि) की ज़रूरत होती है. इससे साइटों के लिए, चुपचाप जांच करना और फ़िंगरप्रिंटिंग करना मुश्किल हो जाता है.
- गुप्त और निजी सेशन: गुप्त या निजी सेशन में, मध्यस्थता के लिए तुरंत किए गए किसी भी अनुरोध पर
NotAllowedError
दिखता है. allowCredentials
सूचियों के इस्तेमाल पर पाबंदियां:allowCredentials
सूचियों का इस्तेमाल करने वाले अनुरोधों सेNotAllowedError
गड़बड़ी होती है. इससे साइटों को उपयोगकर्ता के इंटरैक्शन के इतिहास का अनुमान लगाने या अलग-अलग सेशन में उपयोगकर्ताओं को ट्रैक करने से रोका जा सकता है.- रद्द करना: तुरंत मीडिएशन वाले अनुरोध पर
signal
पैरामीटर सेट करना अमान्य है. इससे साइटें, प्रोग्राम के हिसाब से किसी भी ब्राउज़र यूज़र इंटरफ़ेस (यूआई) को खारिज नहीं कर पाती हैं.
इसे आज़माएं
हमारा सुझाव है कि आप WebAuthn की मदद से, तुरंत पुष्टि करने की सुविधा को आज़माएं.
Chrome में स्टेटस
यह सुविधा, Chromium डेवलपमेंट साइकल के इन चरणों से गुज़र रही है:
- डेस्कटॉप: Chrome 136 में डेवलपर के लिए उपलब्ध टेस्ट वर्शन. Chrome 139 से 141 तक, ओरिजिन ट्रायल के तौर पर उपलब्ध है.
- Android: Chrome 140 में डेवलपर के लिए उपलब्ध ट्रायल.
स्थानीय टेस्टिंग के लिए
WebAuthn के ज़रिए तुरंत मीडिएशन की सुविधा को स्थानीय तौर पर आज़माने के लिए:
- Chrome 139 डाउनलोड करें: अपने डेस्कटॉप पर Chrome का नया वर्शन डाउनलोड करें और उसे खोलें.
- Immediate Mediation फ़्लैग चालू करें: पता बार में
chrome://flags/#web-authentication-immediate-get
पर जाएं और "Web Authentication Immediate Get" फ़्लैग चालू करें. - क्रेडेंशियल तैयार करें: पक्का करें कि आपके पास इस्तेमाल की जा सकने वाली पासकी और पासवर्ड सेव हों:
- Google Password Manager में सेव किए गए पासवर्ड.
- Google Password Manager में सेव की गई पासकी. इसके लिए, Chrome को Google खाते से साइन इन और सिंक करना ज़रूरी है. इसके अलावा, Windows Hello या iCloud Keychain में सेव की गई पासकी का इस्तेमाल किया जा सकता है.
सार्वजनिक तौर पर टेस्टिंग (ऑरिजिन ट्रायल) के लिए
सार्वजनिक एनवायरमेंट में ऑरिजिन ट्रायल के साथ WebAuthn की मीडिएशन की सुविधा को तुरंत टेस्ट करने के लिए:
- साइन अप करें: Chrome के ऑरिजिन ट्रायल पेज पर जाएं और "WebAuthn immediate mediation" ट्रायल के लिए साइन अप करें.
- एचटीटीपी हेडर में टोकन जोड़ें: अपनी साइट के एचटीटीपी हेडर में, उपलब्ध कराया गया ऑरिजिन ट्रायल टोकन शामिल करें:
HTML Origin-Trial: [YOUR_TRIAL_TOKEN]
ध्यान दें: JavaScript की मदद से, प्रोग्राम के हिसाब से भी टोकन दिए जा सकते हैं.
टेस्टिंग के उदाहरण
हम आपको रेफ़रंस के तौर पर लागू करने का तरीका बताते हैं. साथ ही, हमारा सुझाव है कि आप अलग-अलग स्थितियों को आज़माने के लिए, अपना प्रोटोटाइप बनाएं.
- रेफ़रंस डेमो: रेफ़रंस के तौर पर लागू करने की सुविधा को
https://deephand.github.io/webauthn-immediate-demo/
पर आज़माया जा सकता है.- प्रोटोटाइप लागू करें: अपनी साइट पर प्रोटोटाइप लागू करते समय, पक्का करें कि उपयोगकर्ता के क्लिक करने के बाद,
mediation: 'immediate'
के साथnavigator.credentials.get()
कॉल किया गया हो. उदाहरण के लिए, "साइन इन करें" बटन या कोई ऐसी इंटरैक्शन जिसमें उपयोगकर्ता को साइन इन करना ज़रूरी हो.
- प्रोटोटाइप लागू करें: अपनी साइट पर प्रोटोटाइप लागू करते समय, पक्का करें कि उपयोगकर्ता के क्लिक करने के बाद,
- पहला फ़्लो: पासवर्ड या पासकी के बिना साइन इन करना: अगर आपके पास साइट के लिए कोई पासकी या पासवर्ड उपलब्ध नहीं है, तो "साइन इन करें" पर क्लिक करने से सीधे आपके स्टैंडर्ड साइन-इन पेज पर पहुंच जाता है. इसमें कोई ब्राउज़र यूज़र इंटरफ़ेस (यूआई) नहीं दिखता.
- दूसरा तरीका: तुरंत उपलब्ध पासकी से साइन इन करना: अगर आपने साइट के लिए कोई पासकी सेव की है, तो "साइन इन करें" पर क्लिक करने से, तुरंत मीडिएशन यूज़र इंटरफ़ेस (यूआई) ट्रिगर होना चाहिए. इससे पासकी को चुनने का विकल्प मिलता है.
- तीसरा फ़्लो: डिवाइस पर सेव की गई पासकी या पासवर्ड से साइन इन करना: अगर आपने पासकी और पासवर्ड, दोनों सेव किए हैं, तो "पासवर्ड का अनुरोध करें" विकल्प चालू करें. इसके लिए, अपने कोड में
password: true
सेट करें. "साइन इन करें" पर क्लिक करने के बाद, आपको पासकी और पासवर्ड, दोनों के विकल्प दिखने चाहिए. ये विकल्प, तुरंत दिखने वाले मीडिएशन यूज़र इंटरफ़ेस (यूआई) में दिखेंगे.