WebAuthn इमीडिएट मीडिएशन की गहराई से जानकारी। जानें कि यह कैसे एक सिंगल साइन-इन बटन बनाता है, भ्रमित करने वाले QR कोड से बचाता है और एक स्मार्ट लॉगिन फ़्लो तैयार करता है।
Vincent
Created: August 8, 2025
Updated: August 13, 2025
See the original blog version in English here.
60-page Enterprise Passkey Whitepaper:
Learn how leaders get +80% passkey adoption. Trusted by Rakuten, Klarna & Oracle
पासकी पर ट्रांज़िशन एक "पासकी पैराडॉक्स" बना रहा है: कुछ यूज़र्स के पास पासकी हैं, जबकि कई अभी भी पारंपरिक पासवर्ड का उपयोग करते हैं। इसके कारण लॉगिन स्क्रीन पर कई बटन दिखाई देते हैं: "पासवर्ड से साइन इन करें", "Google से साइन इन करें" और "पासकी से साइन इन करें"। यह बिखराव रुकावट पैदा करता है। एक यूज़र किसी नए डिवाइस पर "पासकी से साइन इन करें" पर क्लिक कर सकता है और उसे एक भ्रमित करने वाले QR कोड प्रॉम्प्ट का सामना करना पड़ सकता है क्योंकि उसकी पासकी स्थानीय रूप से उपलब्ध नहीं है। मुख्य समस्या यह है कि वेबसाइट ऑथेंटिकेशन फ़्लो शुरू करने से पहले यूज़र के कॉन्टेक्स्ट को नहीं जान पाती है।
एक समाधान आइडेंटिफ़ायर-फ़र्स्ट होना और यूज़र के लिए सबसे अच्छा लॉगिन तरीका निर्धारित करना है। एक और संभावित समाधान एक सिंगल, इंटेलिजेंट "साइन इन" बटन है जो प्रत्येक यूज़र के लिए सबसे सहज फ़्लो को ऑर्केस्ट्रेट करता है। अगर डिवाइस पर पासकी उपलब्ध है तो इसे सीधे पासकी के लिए प्रॉम्प्ट करना चाहिए, या अगर नहीं है तो आसानी से दूसरे तरीकों पर फ़ॉलबैक करना चाहिए।
एक नया WebAuthn फ़ीचर घोषित किया गया है जो इसे संभव बना सकता है: इमीडिएट मीडिएशन
(mediation: 'immediate'
)। WebAuthn API कॉल में इस प्रॉपर्टी को सेट करके, डेवलपर एक
इंटेलिजेंट, एकीकृत साइन-इन अनुभव बना सकते हैं जो पासकी पैराडॉक्स को हल करता है। यह लेख
mediation: 'immediate'
का डेवलपर-केंद्रित विश्लेषण प्रदान करता है, जिसमें यह पता लगाया
गया है कि यह क्या है, यह कैसे काम करता है, और इसे कैसे लागू किया जाए।
इमीडिएट मीडिएशन को समझने के लिए, पहले दूसरे विकल्पों को जानना मददगार है। WebAuthn में यूज़र मीडिएशन यह है कि ब्राउज़र आपकी वेबसाइट (Relying Party) और यूज़र के ऑथेंटिकेटर (जैसे, Face ID, YubiKey) के बीच इंटरैक्शन को कैसे मैनेज करता है।
यह क्लासिक, स्पष्ट WebAuthn फ़्लो है। जब कोई Relying Party
mediation
वरीयता निर्दिष्ट किए बिना navigator.credentials.get()
को कॉल करता है, तो
ब्राउज़र हमेशा एक मोडल डायलॉग प्रस्तुत करता है। यह डायलॉग पेज कंटेंट के ऊपर आ जाता है,
यूज़र का तत्काल ध्यान खींचता है और वेबसाइट के साथ अन्य सभी इंटरैक्शन को रोक देता है।
mediation: 'conditional'
#यूज़र्स को पासकी पर ट्रांज़िशन में मदद
करने के लिए पेश किया गया यह मोड ज़्यादा सूक्ष्म है। mediation: 'conditional'
के साथ,
WebAuthn रिक्वेस्ट को autocomplete="webauthn"
एट्रिब्यूट के साथ एक इनपुट फ़ील्ड (जैसे,
यूज़रनेम) से जोड़ा जाता है। जब यूज़र फ़ील्ड पर क्लिक करता है, तो ब्राउज़र का ऑटोफ़िल UI
किसी भी उपलब्ध पासकी का सुझाव देता है।
mediation: 'immediate'
"सिंगल साइन-इन बटन" की समस्या का समाधान है। यह एक वेबसाइट को कोई
भी UI दिखाने से पहले पासकी की उपलब्धता की जांच करने का एक विश्वसनीय तरीका प्रदान करता है।
एक मोडल के माध्यम से यूज़र को पासकी से ऑथेंटिकेट करने के लिए बताने के बजाय, immediate
मीडिएशन ब्राउज़र से पूछता है: "क्या इस यूज़र के लिए इस डिवाइस पर अभी कोई पासकी आसानी
से उपलब्ध है?"
महत्वपूर्ण रूप से, यह क्वेरी केवल स्थानीय रूप से उपलब्ध क्रेडेंशियल्स (जैसे, ऑन-डिवाइस ऑथेंटिकेटर जैसे Windows Hello या पासवर्ड मैनेजर के माध्यम से सिंक की गई पासकी) की जांच करती है। इसे क्रॉस-डिवाइस QR कोड फ़्लो को ट्रिगर करने से बचने के लिए डिज़ाइन किया गया है, जो एक आम रुकावट का बिंदु है।
इस फ़ीचर की शक्ति इसके स्पष्ट, बाइनरी परिणाम में निहित है। navigator.credentials.get()
द्वारा लौटाया गया प्रॉमिस या तो सफल होगा या विफल, जिससे डेवलपर को एक स्पष्ट सिग्नल मिलेगा।
PublicKeyCredential
ऑब्जेक्ट के साथ रिज़ॉल्व हो जाता है।navigator.credentials.get()
प्रॉमिस NotAllowedError
नामक DOMException
के साथ
तुरंत रिजेक्ट हो जाता है।NotAllowedError
कोई बग नहीं है। यह एक फ़ीचर की तरह है। यह एक विश्वसनीय, तत्काल सिग्नल है
कि वेबसाइट को एक फ़ॉलबैक ऑथेंटिकेशन मेथड के साथ आगे बढ़ना चाहिए। यह डेवलपर्स को एक सरल
try...catch
ब्लॉक का उपयोग करने की अनुमति देता है: try
ब्लॉक सहज पासकी फ़्लो का प्रयास
करता है, और catch
ब्लॉक पारंपरिक लॉगिन फ़ॉर्म को रेंडर करने के लिए NotAllowedError
को
सुनता है। यह एक एंट्री पॉइंट बनाकर सिंगल साइन-इन बटन की समस्या को सुरुचिपूर्ण ढंग से हल
करता है जो यूज़र के कॉन्टेक्स्ट के अनुसार बुद्धिमानी से अनुकूल होता है।
सही मीडिएशन मोड चुनना एक महत्वपूर्ण UX निर्णय है। यह तालिका एक साथ तुलना प्रदान करती है।
फ़ीचर / व्यवहार | मोडल (डिफ़ॉल्ट) | कंडीशनल UI (conditional ) | इमीडिएट (immediate ) |
---|---|---|---|
API कॉल | navigator.credentials.get() | navigator.credentials.get({ mediation: 'conditional' }) | navigator.credentials.get({ mediation: 'immediate' }) |
ट्रिगर | स्पष्ट यूज़र एक्शन (जैसे, बटन क्लिक) | पेज लोड; इनपुट फ़ील्ड फ़ोकस पर UI | स्पष्ट यूज़र एक्शन (जैसे, बटन क्लिक) |
UI प्रस्तुति | हमेशा तुरंत एक मोडल डायलॉग दिखाता है। | एक नॉन-मोडल, ऑटोफ़िल-स्टाइल UI दिखाता है। | केवल अगर कोई लोकल क्रेडेंशियल मिलता है, तभी एक मोडल डायलॉग दिखाता है। |
लोकल क्रेडेंशियल न होने पर व्यवहार | क्रॉस-डिवाइस फ़्लो (जैसे, QR कोड) के लिए UI दिखाता है। | प्रॉमिस पेंडिंग रहता है, कभी रिज़ॉल्व नहीं होता, कोई एरर नहीं फेंका जाता। | प्रॉमिस NotAllowedError के साथ तुरंत रिजेक्ट हो जाता है। |
साइट को मिलने वाली जानकारी | यूज़र द्वारा फ़्लो पूरा करने तक कुछ नहीं सीखता। | अगर यूज़र इंटरैक्ट नहीं करता तो कुछ नहीं सीखता। उच्चतम प्राइवेसी। | एक बिट जानकारी सीखता है: क्या कोई लोकल क्रेडेंशियल मौजूद है। |
मुख्य उपयोग का मामला | समर्पित "पासकी से साइन इन करें" बटन। स्पष्ट 2FA। | एकीकृत साइन-इन/साइन-अप फ़ॉर्म। पासवर्ड फ़ॉर्म को धीरे-धीरे बेहतर बनाना। | एक मिश्रित यूज़र बेस के लिए एक सिंगल, प्राथमिक "साइन इन" बटन। |
डेवलपर की कार्रवाई | सफलता या यूज़र कैंसलेशन को हैंडल करें। | सफलता को हैंडल करें। कार्रवाई करने के लिए कोई विफलता सिग्नल नहीं। | सफलता या NotAllowedError को हैंडल करके एक फ़ॉलबैक UI ट्रिगर करें। |
यहाँ mediation: 'immediate'
को लागू करने के लिए एक व्यावहारिक, चरण-दर-चरण गाइड है।
चूंकि mediation: 'immediate'
एक नया फ़ीचर है, इसलिए मजबूत फ़ीचर डिटेक्शन महत्वपूर्ण है।
// Feature detection is essential for progressive enhancement. let immediateMediationAvailable = false; if (window.PublicKeyCredential && PublicKeyCredential.getClientCapabilities) { try { const capabilities = await PublicKeyCredential.getClientCapabilities(); // The 'immediateGet' capability signals browser support. immediateMediationAvailable = capabilities.immediateGet === true; } catch (e) { console.error("Error getting client capabilities:", e); } }
navigator.credentials.get()
कॉल#यह कॉल एक यूज़र जेस्चर द्वारा ट्रिगर किया जाना चाहिए, जैसे कि एक बटन क्लिक।
// This function should be the event handler for your primary "Sign In" button. async function handleSignInClick() { if (!immediateMediationAvailable) { // Fall back to showing a legacy login form if the feature isn't supported. showLegacyLoginForm(); return; } try { // Fetch a fresh, random challenge from your server for each attempt. const challenge = await fetchChallengeFromServer(); const publicKeyCredentialRequestOptions = { challenge: challenge, // The server-provided challenge as a Uint8Array rpId: "example.com", // The allowCredentials list MUST be empty for immediate mediation // to protect user privacy. allowCredentials: [], }; const credential = await navigator.credentials.get({ publicKey: publicKeyCredentialRequestOptions, // This is the key that enables the immediate mediation flow. mediation: "immediate", }); // If the promise resolves, send the credential to your server for verification. await verifyCredentialOnServer(credential); } catch (error) { // The catch block is a critical part of the control flow. handleAuthError(error); } }
NotAllowedError
को हैंडल करना#catch
ब्लॉक वह जगह है जहाँ सिंगल साइन-इन बटन की "इंटेलिजेंस" को साकार किया जाता है।
// Handling the NotAllowedError is the key to the fallback mechanism. function handleAuthError(error) { // Check the 'name' property of the DOMException. if (error.name === "NotAllowedError") { // This is the expected signal to show the traditional login form. console.log("No local passkey found. Showing legacy login form."); showLegacyLoginForm(); } else { // This handles other potential errors, like the user dismissing the prompt. console.error("Authentication error:", error); } }
सबसे सहज अनुभव के लिए, आप ब्राउज़र से एक ही रिक्वेस्ट में पासकी और सहेजे गए पासवर्ड दोनों
को खोजने के लिए कह सकते हैं, इसके लिए password: true
जोड़ें।
// Combining passkeys and passwords for a truly unified sign-in experience. const credential = await navigator.credentials.get({ publicKey: publicKeyCredentialRequestOptions, password: true, // Ask the browser to include saved passwords. mediation: "immediate", }); // The returned 'credential' object will either be a PublicKeyCredential // or a PasswordCredential. Your server-side logic must handle both.
conditional
रिक्वेस्ट (जो अक्सर पेज लोड
पर शुरू होती है) एक नई immediate
रिक्वेस्ट को ब्लॉक कर सकती है। एक नई रिक्वेस्ट शुरू
करने से पहले किसी भी पेंडिंग रिक्वेस्ट को रद्द करने के लिए AbortController
का उपयोग
करने पर विचार करें।allowCredentials
पर प्रतिबंध: allowCredentials
ऐरे खाली होना चाहिए।
क्रेडेंशियल आईडी प्रदान करने से कॉल विफल हो जाएगी। यह एक महत्वपूर्ण प्राइवेसी सुरक्षा
उपाय है ताकि साइटें विशिष्ट, ज्ञात यूज़र्स की जांच न कर सकें।mediation: 'immediate'
को इसके सुरक्षा और गोपनीयता ट्रेड-ऑफ़ की स्पष्ट समझ के साथ
डिज़ाइन किया गया था।
मुख्य ट्रेड-ऑफ़ एक "वन-बिट लीक" है। प्रॉमिस के रिज़ॉल्यूशन के समय को मापकर, एक Relying Party एक बिट जानकारी का अनुमान लगा सकता है: क्या प्रॉमिस तुरंत रिजेक्ट हो गया (कोई लोकल क्रेडेंशियल नहीं) या इसमें देरी हुई (एक UI प्रॉम्प्ट दिखाया गया क्योंकि एक लोकल क्रेडेंशियल मिला था)। इस लीक का उद्देश्य एक बेहतर UX को सक्षम करना है।
डिजाइनरों ने दुरुपयोग (जैसे, यूज़र ट्रैकिंग) की क्षमता का अनुमान लगाया और कई अनिवार्य सुरक्षा उपाय बनाए:
allowCredentials
लिस्ट: allowCredentials
ऐरे खाली होना चाहिए। यह एक
साइट को इस फ़ीचर का उपयोग यह जांचने के लिए करने से रोकता है कि क्या कोई विशिष्ट ज्ञात
यूज़र विज़िट कर रहा है।iframe
) में अस्वीकृत है ताकि क्रॉस-साइट ट्रैकिंग को रोका जा सके।ये उपाय सुनिश्चित करते हैं कि WebAuthn की मुख्य सुरक्षा गारंटी अछूती रहें। ऑथेंटिकेशन सेरेमनी स्वयं अपरिवर्तित रहती है और फ़िशिंग-प्रतिरोधी बनी रहती है।
mediation: 'immediate'
WebAuthn लेवल 3 स्पेसिफिकेशन
का एक उन्नत फ़ीचर है, और इसका रोलआउट जारी है। 2025 के मध्य तक, एक प्रोग्रेसिव एन्हान्समेंट
रणनीति आवश्यक है।
ब्राउज़र | स्थिति | नोट्स और स्रोत |
---|---|---|
Chrome | डेवलपर ट्रायल | experimental-web-platform-features फ़्लैग के माध्यम से उपलब्ध है। ट्रैकिंग बग। |
Edge | डेवलपमेंट में (अपेक्षित) | एक क्रोमियम ब्राउज़र के रूप में, सपोर्ट क्रोम के बाद आना चाहिए। |
Safari (WebKit) | विचाराधीन | WebKit स्टैंडर्ड्स पोज़िशन्स। कोई सार्वजनिक प्रतिबद्धता नहीं। |
Firefox (Gecko) | विचाराधीन | Mozilla स्टैंडर्ड्स पोज़िशन्स। कोई सार्वजनिक प्रतिबद्धता नहीं। |
जबकि mediation: 'immediate'
एक स्मार्टर लॉगिन बटन के लिए एक बेहतरीन, लो-लेवल टूल प्रदान
करता है, इसे एक व्यापक
"पासकी इंटेलिजेंस"
समाधान, जैसे कि Corbado द्वारा पेश किए गए समाधान से अलग करना महत्वपूर्ण है। दोनों का
उद्देश्य पासकी पैराडॉक्स को हल करना और अपनाने को बढ़ाना है, लेकिन वे इसे अलग-अलग तरीकों से
करते हैं।
फ़ीचर | mediation: 'immediate' | पासकी इंटेलिजेंस (जैसे, Corbado) |
---|---|---|
यह कैसे काम करता है | एक ब्राउज़र-नेटिव API कॉल जो वर्तमान डिवाइस पर स्थानीय रूप से उपलब्ध पासकी की जांच करता है। | एक बैकएंड सर्विस जो सेशन के दौरान यूज़र डिवाइस, ऑथेंटिकेटर और लॉगिन हिस्ट्री के बारे में डेटा एकत्र और विश्लेषण करती है। |
प्रदान किया गया सिग्नल | एक सरल, बाइनरी सिग्नल: एक लोकल पासकी या तो मौजूद है (UI प्रॉम्प्ट ) या नहीं है (NotAllowedError )। | समृद्ध, प्रासंगिक जानकारी, जैसे, "इस यूज़र ने अभी एक पासकी-सक्षम डिवाइस पर पासवर्ड से लॉगिन किया है जिसका वे अक्सर उपयोग करते हैं।" |
मुख्य लाभ | न्यूनतम नेटवर्क ओवरहेड के साथ बहुत तेज़, नेटिव जांच। | नए WebAuthn फ़ीचर्स के लिए ब्राउज़र/OS सपोर्ट से स्वतंत्र, सार्वभौमिक उपलब्धता। अधिक अनुकूलित UX के लिए गहरी जानकारी। |
मुख्य निर्भरता | अप-टू-डेट ब्राउज़र और OS सपोर्ट की आवश्यकता है, जो अभी तक सार्वभौमिक नहीं है। | एक बैकएंड सर्विस के साथ इंटीग्रेशन। |
पासकी इंटेलिजेंस समय के साथ डेटा एकत्र और मूल्यांकन करके एक कदम आगे जाता है। यह अधिक परिष्कृत और समय पर यूज़र हस्तक्षेप की अनुमति देता है। उदाहरण के लिए, एक पासकी इंटेलिजेंस बैकएंड पता लगा सकता है:
यह डेटा-संचालित दृष्टिकोण mediation: 'immediate'
के लिए ब्राउज़र सपोर्ट से स्वतंत्र है,
जिसका अर्थ है कि यह आपके सभी यूज़र्स के लिए अभी एक अधिक इंटेलिजेंट लॉगिन फ़्लो प्रदान कर
सकता है।
दोनों दुनियाओं का सर्वश्रेष्ठ
अंततः, ये दोनों दृष्टिकोण परस्पर अनन्य नहीं हैं; वे एक दूसरे के पूरक हैं। आदर्श समाधान उन्हें जोड़ता है:
mediation: 'immediate'
का उपयोग समर्थित ब्राउज़रों पर अपने संकेतों में से
एक के रूप में एक त्वरित, प्रारंभिक जांच करने के लिए कर सकती है।mediation: 'immediate'
की नेटिव गति को
पासकी इंटेलिजेंस
बैकएंड की गहरी जानकारी के साथ जोड़कर, आप सबसे सहज, अनुकूली और प्रभावी लॉगिन अनुभव प्रदान
कर सकते हैं, जो हर यूज़र को धीरे-धीरे पासवर्ड रहित भविष्य की ओर मार्गदर्शन करता है।
इमीडिएट मीडिएशन लॉगिन अनुभव के लिए एक शानदार अपग्रेड है। यह पासकी पर ट्रांज़िशन के दौरान यूज़र्स के लिए रुकावट और भ्रम के सामान्य बिंदुओं को खत्म करने के लिए आवश्यक इंटेलिजेंस प्रदान करता है।
immediate
मीडिएशन यूज़र के लिए मानसिक बोझ को हटा देता है। उन्हें अब यह याद रखने की ज़रूरत नहीं है
कि उन्होंने कौन सा ऑथेंटिकेशन मेथड सेट किया था या विकल्पों की भीड़-भाड़ वाली सूची में से
चुनना है। लॉगिन प्रक्रिया सरल और अधिक सहज हो जाती है।mediation: 'immediate'
केवल लोकल क्रेडेंशियल्स की तलाश करता है, यह इस भ्रमित करने वाली
स्थिति से पूरी तरह बचता है। यूज़र द्वारा फ़्लो को छोड़ने के बजाय, एप्लिकेशन को दूसरे
मेथड पर आसानी से फ़ॉलबैक करने के लिए एक स्पष्ट सिग्नल (NotAllowedError
) मिलता है,
जिसके परिणामस्वरूप एक सहज यात्रा होती है।इमीडिएट मीडिएशन एक नया WebAuthn फ़ीचर है जो पासकी ट्रांज़िशन अवधि के खंडित लॉगिन अनुभव को हल करता है। यह एक सिंगल, इंटेलिजेंट "साइन इन" बटन बनाने में सक्षम बनाता है जो यूज़र के कॉन्टेक्स्ट के अनुकूल होता है, जिससे भ्रम और रुकावट समाप्त होती है। जबकि यह एक सोचा-समझा प्राइवेसी ट्रेड-ऑफ़ पेश करता है, इसमें WebAuthn की मुख्य सुरक्षा से समझौता किए बिना जोखिमों को कम करने के लिए मजबूत सुरक्षा उपाय शामिल हैं।
डेवलपर्स के लिए, आगे का रास्ता प्रोग्रेसिव एन्हान्समेंट है। एक ठोस आधारभूत अनुभव बनाएं, और
समर्थित ब्राउज़रों के लिए शीर्ष पर immediate
मीडिएशन की परत चढ़ाएं। इस फ़ीचर को अपनाना
पासकी अपनाने में तेजी लाने, सुरक्षा बढ़ाने,
परिचालन लागत कम करने और रूपांतरण में सुधार करने के लिए एक रणनीतिक कदम है।
इन उन्नत ऑथेंटिकेशन फ़्लो को लागू करना जटिल हो सकता है। Corbado का एंटरप्राइज़ पासकी
प्लेटफ़ॉर्म इस जटिलता को दूर करता है। हमारा
इंफ़्रास्ट्रक्चर इष्टतम फ़्लो ऑर्केस्ट्रेशन को
संभालता है—जिसमें कंडीशनल और immediate
मीडिएशन शामिल है—जिससे आपकी टीम आत्मविश्वास के
साथ एक अत्याधुनिक, घर्षण रहित ऑथेंटिकेशन अनुभव तैनात कर सकती है।
Enjoyed this read?
🤝 Join our Passkeys Community
Share passkeys implementation tips and get support to free the world from passwords.
🚀 Subscribe to Substack
Get the latest news, strategies, and insights about passkeys sent straight to your inbox.
Related Articles
Table of Contents