जानें कि WebAuthn Signal API क्लाइंट-साइड ऑथेंटिकेटर्स पर पासकी को आसानी से डिलीट करने और मेटाडेटा (user.name, user.displayName) को अपडेट करने में कैसे मदद करता है।
Vincent
Created: August 8, 2025
Updated: January 22, 2026

See the original blog version in English here.

Looking for a dev-focused passkey reference? Download our Passkeys Cheat Sheet. Trusted by dev teams at Ally, Stanford CS & more.
आखरी अपडेट: 4 नवंबर, 2025
विभिन्न प्लेटफॉर्म्स पर WebAuthn Signal API सपोर्ट का एक संक्षिप्त अवलोकन:
| प्लेटफॉर्म | वेब सपोर्ट | नेटिव सपोर्ट |
|---|---|---|
| Windows | ✅ Chrome + Google Password Manager | N/A |
| macOS | ✅ Safari 26+ (iCloud Keychain) | N/A |
| iOS | ✅ Safari 26+ (iCloud Keychain) | ✅ iOS 26+ (WWDC 2025 Session 279) |
| Android | 🧪 Chrome 143 (Beta) | 🧪 Credential Manager Alpha (v1.6.0-alpha05; beta in v1.6.0-beta03) |
⚠️ ज्ञात समस्या (Known Issue): Safari 26+ में एक बग है जहाँ promise ठीक से रिज़ॉल्व नहीं होता है (WebKit Bug #298951)। इसका फिक्स पेंडिंग है।
Passkey इकोसिस्टम तेजी से विकसित हो रहा है। इस बदलाव को सुविधाजनक बनाने के लिए, बुनियादी WebAuthn स्टैंडर्ड भी तेज़ी से आगे बढ़ रहा है। नई सुविधाएँ अक्सर GitHub में एक टेक्निकल एक्सप्लेनर के साथ शुरू होती हैं और फिर पर्याप्त चर्चा के बाद स्टैंडर्ड ड्राफ्ट में एक पुल रिक्वेस्ट के रूप में शामिल की जाती हैं। हाल ही में, इस पुल रिक्वेस्ट को स्टैंडर्ड ड्राफ्ट में WebAuthn Signal API के रूप में जोड़ा गया था। इस लेख में, हम कवर करेंगे:
लेखते समय तक, WebAuthn Signal API, Chrome 132 के बाद से डिफ़ॉल्ट रूप से इनेबल है। इसे पहले Reporting API के नाम से जाना जाता था, लेकिन उसी नाम की एक अन्य API के साथ टकराव से बचने के लिए इसका नाम बदल दिया गया।
WebAuthn Signal API क्लाइंट-साइड पर Passkeys के मैनेजमेंट से संबंधित विशिष्ट यूज़ केसेस को संबोधित करता है। विशेष रूप से, यह Relying Party (RP) और Authenticators (जो क्लाइंट-साइड ऑपरेटिंग सिस्टम का हिस्सा हैं) के बीच जानकारी को सिंक (sync) रखने में मदद करता है। इसके निम्नलिखित महत्वपूर्ण उपयोग हैं:
Subscribe to our Passkeys Substack for the latest news.
जब कोई Passkey बनाई जाती है, तो इसमें जानकारी के कई टुकड़े शामिल होते हैं: user.id,
user.name, और user.displayName। Passkey की पहचान अद्वितीय
Credential ID के माध्यम से की जाती है।
user.id महत्वपूर्ण है क्योंकि इसका उपयोग यूज़र के अकाउंट के साथ
Passkey की वास्तविक मिलान (matching) के लिए किया जाता है।नीचे दिया गया चित्र एक विशिष्ट, सरल डेटाबेस संरचना को दर्शाता है जो यह बताता है कि कौन सी जानकारी आमतौर पर किस फ़ील्ड में स्टोर की जाएगी:
यह समझना महत्वपूर्ण है कि जबकि user.name (अक्सर एक ईमेल पता) और user.displayName (एक
अधिक अनुकूल, पठनीय नाम) यूज़र को चयन UI में अपने अकाउंट की पहचान करने में मदद करते हैं,
Passkey और अकाउंट के बीच का वास्तविक जुड़ाव user.id और Credential ID के माध्यम
से बनाए रखा जाता है:
user.id का उपयोग करके अकाउंट से मैच किया जाता है।एक समस्या तब आती है जब user.name, जो एक ईमेल पता हो सकता है, बदल जाता है। वर्तमान में,
क्लाइंट-साइड Authenticator पर सीधे इस बदलाव को अपडेट करने का
कोई तंत्र (mechanism) नहीं है। user.name कई कारणों से बदल सकता है, जैसे जब कोई यूज़र
अपना ईमेल पता अपडेट करता है। सर्वर साइड पर अकाउंट के मेटाडेटा में इस बदलाव के बावजूद,
पुराना user.name क्रेडेंशियल चयन UI में दिखाई देता रहता है, जो यूज़र्स के लिए भ्रम पैदा
कर सकता है।
इस समस्या का समाधान यह है कि अपडेट किए गए user.name और उसी user.id के साथ एक नई
Passkey बनाई जाए, और फिर मौजूदा Passkey को ओवरराइट कर दिया जाए। हालाँकि, यह तरीका कई
कारणों से असुविधाजनक है:
user.id केवल एक Passkey
स्टोर कर सकता है। इसका मतलब है कि मेटाडेटा अपडेट करने के लिए पुरानी Passkey को नई के
साथ बदलना होगा, जो एक अतिरिक्त चरण है।ईमेल पते, फोन नंबर और अन्य आइडेंटिफायर नियमित रूप से बदल सकते हैं। Authenticator पर सीधे
user.name और user.displayName को अपडेट करने का सीधा तरीका न होने पर, यूज़र्स को एक
लगातार समस्या का सामना करना पड़ सकता है जहाँ वे अपने पुराने ईमेल पते से जुड़ी Passkey
देखते हैं और उसे चुनने के लिए मजबूर होते हैं। यह स्थिति उस सहज अनुभव को कमजोर करती है जो
Passkeys प्रदान करने का लक्ष्य रखते हैं। WebAuthn Signal API का उद्देश्य Relying Parties
को नई Passkeys बनाने की आवश्यकता के बिना मेटाडेटा के अपडेट रिपोर्ट करने की अनुमति देकर इस
समस्या को हल करना है। Signal API को इम्प्लीमेंट करने के तरीके को समझाने से पहले, हम दूसरे
महत्वपूर्ण यूज़ केस का पता लगाएंगे जो इसे संबोधित करता है।
Become part of our Passkeys Community for updates & support.
एक और महत्वपूर्ण यूज़ केस क्लाइंट-साइड Authenticator पर Passkeys को डिलीट करना है। समय के साथ, यूज़र्स Passkey मैनेजमेंट लिस्ट के माध्यम से क्रेडेंशियल्स को रिवोक (revoke) कर सकते हैं या अपने अकाउंट्स को डिलीट कर सकते हैं। यह सुनिश्चित करना आवश्यक हो जाता है कि ये क्रेडेंशियल्स क्लाइंट-साइड Authenticator से हटा दिए जाएं ताकि वे भविष्य के क्रेडेंशियल चयन UI (Conditional UI / Passkey autofill) में दिखाई न दें।
इस कार्यक्षमता की आवश्यकता कई परिदृश्यों में होती है:
यूज़र के दृष्टिकोण से, यह समझना मुश्किल है कि उनकी अकाउंट सेटिंग में, ऊपर दिए गए डायलॉग की तरह, डिलीट करने से इस क्लाइंट पर Passkey हटने का कारण क्यों नहीं बनता।
अकाउंट डिलीट करना: जब कोई यूज़र अपना अकाउंट डिलीट करता है, तो सभी संबद्ध Passkeys को भी हटा दिया जाना चाहिए।
सुरक्षा नीतियां (Security Policies): Relying Parties के पास सुरक्षा नीतियां हो सकती हैं जो निष्क्रियता (inactivity) की अवधि के बाद या पता लगाए गए सुरक्षा मुद्दों के कारण क्रेडेंशियल्स को रद्द करने की आवश्यकता रखती हैं।
क्लाइंट-साइड पर Passkeys को डिलीट करने की सीधी विधि के बिना, ये पुराने या अमान्य क्रेडेंशियल्स चयन UI में भीड़ बढ़ाते रहते हैं, जिससे भ्रम पैदा होता है। यूज़र्स उन Passkeys को देख सकते हैं और उपयोग करने का प्रयास कर सकते हैं जो अब मान्य नहीं हैं, जिसके परिणामस्वरूप ऑथेंटिकेशन प्रयास विफल होते हैं और यूज़र एक्सपीरियंस खराब होता है।
Corbado Connect Management Console में सर्वर-साइड Passkeys को कैसे डिलीट करें, इस पर यह वीडियो देखें:
WebAuthn Signal API को इम्प्लीमेंट करने में यह सुनिश्चित करने के लिए कई चरण और विचार शामिल हैं कि कार्यक्षमता सही और सुरक्षित रूप से एकीकृत है। Signal API Relying Parties (RPs) को क्लाइंट-साइड Authenticator पर passkey क्रेडेंशियल्स को अपडेट या डिलीट (delete passkey) करने की अनुमति देता है। यह अनुभाग इम्प्लीमेंटेशन के लिए प्रमुख विचारों और चरणों की रूपरेखा तैयार करता है।
WebAuthn Signal API को लागू करते समय, निम्नलिखित बातों को ध्यान में रखना महत्वपूर्ण है:
प्राइवेसी की सुरक्षा (Privacy Preserving): WebAuthn Signal API को user privacy को संरक्षित करने के लिए डिज़ाइन किया गया है क्योंकि यह WebAuthn की नींव में से एक है। इसका मतलब है कि RP को कोई फीडबैक नहीं दिया जाता है कि अनुरोधित परिवर्तन प्रोसेस किया गया था या नहीं। क्रेडेंशियल्स की स्थिति (state) के बारे में किसी भी संभावित जानकारी को लीक होने से रोकने के लिए API चुपचाप (silently) काम करता है।
Authenticator की उपलब्धता: WebAuthn Signal API की प्रभावशीलता Authenticator की उपलब्धता पर निर्भर करती है। इसमें भौतिक उपलब्धता और सॉफ्टवेयर सपोर्ट (जैसे, ब्राउज़र और ऑपरेटिंग सिस्टम की अनुकूलता) दोनों शामिल हैं। ब्राउज़र केवल तभी कार्रवाई कर सकता है जब Authenticator सुलभ हो और biometric authentication की आवश्यकता के बिना आवश्यक ऑपरेशन्स का समर्थन करता हो।
डोमेन प्रतिबंध (Domain Restrictions): API यह सुनिश्चित करता है कि केवल किसी विशिष्ट डोमेन से जुड़ा Relying Party ही उस डोमेन से संबंधित क्रेडेंशियल्स में बदलाव का अनुरोध कर सकता है। यह तीसरे पक्षों द्वारा अनधिकृत संशोधनों को रोकने के लिए एक सुरक्षा उपाय है।
कुंजी (Key) के रूप में Credential ID: Passkeys का संदर्भ देते समय, Credential ID वह प्राथमिक कुंजी (primary key) है जिसका उपयोग WebAuthn Signal API द्वारा किया जाता है। यह ID क्लाइंट-साइड Authenticator पर Passkey को विशिष्ट रूप से पहचानता है। API RPs को Passkeys से जुड़े मेटाडेटा को बदलने या यह संकेत देने की अनुमति देता है कि कुछ Passkeys को अब एक्सेस नहीं किया जाना चाहिए, लेकिन केवल Credential ID के माध्यम से। यदि कोई Authenticator किसी विशिष्ट Credential ID को नहीं जानता है, तो वह इसे चुपचाप अनदेखा कर देगा।
WebAuthn Signal API के कार्यों को सही ढंग से समझने के लिए ये विचार आवश्यक हैं।
WebAuthn Signal API Relying Parties (RPs) के लिए क्लाइंट-साइड Authenticators पर Passkeys से जुड़े मेटाडेटा को अपडेट करने के लिए एक सुव्यवस्थित तंत्र प्रदान करता है। यह सुनिश्चित करने के लिए विशेष रूप से महत्वपूर्ण है कि यूज़र्स क्रेडेंशियल चयन UI में सटीक और अद्यतित (up-to-date) जानकारी देखें, बिना अनावश्यक रूप से नई Passkeys बनाए। यहाँ बताया गया है कि API ऐसा कैसे करने की अनुमति देता है:
signalCurrentUserDetails(options) के साथ मेटाडेटा अपडेट करना
Signal API में signalCurrentUserDetails(options) विधि विशेष रूप से Passkeys के मेटाडेटा
को अपडेट करने के लिए डिज़ाइन की गई है। यह विधि RPs को user.name और user.displayName के
लिए वर्तमान मान (current values) प्रदान करने की अनुमति देती है।
यहाँ बताया गया है कि प्रक्रिया कैसे काम करती है (यह भी देखें: WebAuthn Level 3 standard)।
signalCurrentUserDetails(options) विधि में rp.id, user.id और
user.name और user.displayName के लिए अपडेटेड वैल्यूज शामिल हैं।PublicKeyCredential.signalCurrentUserDetails({ rpId: "example.com", userId: "aabbcc", // user handle, base64url. name: "New user name", displayName: "New display name", });
लोकल मेटाडेटा अपडेट करना: स्थानीय रूप से (Authenticator पर) उपलब्ध क्रेडेंशियल्स की
तलाश करें जो rpId और userId से मेल खाते हों। सभी मिलान करने वाले क्रेडेंशियल्स के
लिए, Authenticator क्रेडेंशियल के name और displayName को अपडेट कर देगा।
प्राइवेसी की सुरक्षा: प्रक्रिया को प्राइवेसी-सुरक्षित रखने के लिए डिज़ाइन किया गया है। Signal API RP को कोई फीडबैक प्रदान नहीं करता है कि अपडेट सफलतापूर्वक प्रोसेस किए गए थे या नहीं, जिससे क्रेडेंशियल्स की स्थिति के बारे में जानकारी के किसी भी रिसाव को रोका जा सके।
डिवाइसेज पर एकरूपता: नियमित रूप से signalCurrentUserDetails(options) विधियों को
चलाकर, RPs यह सुनिश्चित कर सकते हैं कि Passkeys के लिए मेटाडेटा विभिन्न उपकरणों और
प्लेटफार्मों पर सुसंगत रहे जहाँ यूज़र ऑथेंटिकेट कर सकता है। यह दृष्टिकोण क्रेडेंशियल
चयन UI में पुरानी या गलत जानकारी प्रदर्शित होने की संभावना को कम करता है।
ऊपर दिए गए स्क्रीनशॉट में, आप देख सकते हैं कि Google Chrome यूज़र को इस तरह के अपडेट का संकेत कैसे देता है। WebAuthn Signal API Chrome का हिस्सा है और इसे डेस्कटॉप पर Google Password Manager के साथ टेस्ट किया जा सकता है।
WebAuthn Signal API Relying Parties (RPs) को क्लाइंट-साइड Authenticators से Passkeys को
डिलीट करने का संकेत (signal) देने के लिए तंत्र प्रदान करता है। यह सुनिश्चित करने के लिए
आवश्यक है कि पुराने या अमान्य क्रेडेंशियल्स क्रेडेंशियल चयन UI में दिखाई न दें, जिससे एक
सुव्यवस्थित और सुरक्षित यूज़र एक्सपीरियंस बना रहे। Passkeys को स्थानीय रूप से डिलीट करने
के दो तरीके हैं: signalUnknownCredential(options) और
signalAllAcceptedCredentials(options)। पहले वाले का उपयोग उन स्थितियों में किया जा सकता
है जहाँ यूज़र ऑथेंटिकेटेड नहीं है, जबकि बाद वाले का उपयोग तब किया जा सकता है जब यूज़र
ऑथेंटिकेटेड हो। इसलिए, प्राइवेसी कारणों से बाद वाले को प्राथमिकता दी जानी चाहिए।
यहाँ बताया गया है कि दोनों तरीके कैसे काम करते हैं:
signalUnknownCredential(options) विधि में rpId (relying party
ID) और credentialId (हटाए जाने वाले क्रेडेंशियल का यूनिक आइडेंटिफायर) शामिल है।PublicKeyCredential.signalUnknownCredential({ rpId: "example.com", credentialId: "aabbcc", // credential id the user just tried, base64url });
मेथड को कॉल करना: RPs इस विधि को तब कॉल करते हैं जब भी उन्हें पता चलता है कि किसी क्रेडेंशियल को डिलीट किया जाना चाहिए। यह एक अमान्य क्रेडेंशियल के साथ ऑथेंटिकेशन प्रयास के तुरंत बाद, अकाउंट डिलीट करने के दौरान, या जब कोई यूज़र अकाउंट सेटिंग्स के माध्यम से क्रेडेंशियल को रद्द करता है, तब हो सकता है।
मेथड को हैंडल करना: जब signalUnknownCredential(options) विधि को कॉल किया जाता है,
तो क्लाइंट-साइड Authenticator उन क्रेडेंशियल्स को खोजने का प्रयास करता है जो rpId और
credentialID से मेल खाते हैं। Authenticator की क्षमताओं के आधार पर, क्रेडेंशियल को
हटा दिया जाता है या भविष्य के ऑथेंटिकेशन समारोहों (authentication ceremonies) में
क्रेडेंशियल को छिपाने के लिए एक Authenticator-विशिष्ट प्रक्रिया को नियोजित किया जाता
है।
signalAllAcceptedCredentials(options) विधि में rpId (relying
party ID), userId और वैध Credential Ids की एक सूची allAcceptedCredentialIds (उन
क्रेडेंशियल्स के यूनिक आइडेंटिफायर्स की सूची जिन्हें रखा जाना चाहिए) शामिल है।PublicKeyCredential.signalAllAcceptedCredentials({ rpId: "example.com", userId: "aabbcc", // user handle, base64url. allAcceptedCredentialIds: ["bb"], });
मेथड को कॉल करना: RPs इस विधि को तब कॉल करते हैं जब भी उन्हें पता चलता है कि किसी
क्रेडेंशियल को डिलीट किया जाना चाहिए और वैध क्रेडेंशियल्स की सूची का संकेत देना चाहिए।
क्रेडेंशियल्स को डिलीट करने के लिए इस विधि को signalUnknownCredential(options) से
अधिक प्राथमिकता दी जानी चाहिए।
मेथड को हैंडल करना: जब signalAllAcceptedCredentials(options) विधि को कॉल किया
जाता है, तो क्लाइंट-साइड Authenticator rpId और userId से मेल खाता है। Authenticator
फिर उन सभी स्थानीय क्रेडेंशियल्स को देखता है जो rpId और userId से मेल खाते हैं।
परिणाम की तुलना allAcceptedCredentialIds से की जाती है। यदि स्थानीय क्रेडेंशियल्स हैं
जो allAcceptedCredentialIds में नहीं हैं, तो उन क्रेडेंशियल्स को स्थानीय रूप से हटा
दिया जाता है (या Authenticator के आधार पर छिपा दिया जाता है)।
क्रेडेंशियल्स को अनहाइड (Unhide) करना: यदि क्रेडेंशियल्स को केवल छिपाया गया है
(Authenticator के आधार पर) और अब वे allAcceptedCredentialIds का हिस्सा हैं, तो ये
क्रेडेंशियल्स भविष्य के ऑथेंटिकेशन समारोहों में फिर से मौजूद होंगे।
उपयोगी टिप्स:
signalAllAcceptedCredentials(options) का उपयोग करते समय यह ध्यान रखना महत्वपूर्ण
है कि Authenticators हमेशा उस समय कनेक्टेड नहीं हो सकते हैं जब यह विधि निष्पादित
(execute) होती है। नतीजतन, Relying Parties समय-समय पर
signalAllAcceptedCredentials(options) चलाने पर विचार कर सकते हैं, जैसे कि हर
साइन-इन के दौरान, यह सुनिश्चित करने के लिए कि सभी क्रेडेंशियल्स अप-टू-डेट हैं।allAcceptedCredentialIds) निर्दिष्ट करते समय Relying
Parties को सतर्क रहना चाहिए। जो क्रेडेंशियल्स इस सूची में शामिल नहीं हैं, उन्हें
Authenticator द्वारा छिपाया या हटाया जा सकता है, जो संभावित रूप से अपरिवर्तनीय हो
सकता है। वैध क्रेडेंशियल्स को गलती से हटाए जाने से रोकने के लिए, यह सुनिश्चित करना
महत्वपूर्ण है कि सूची पूर्ण है। यदि कोई वैध क्रेडेंशियल ID गलती से छूट जाती है, तो
उसे जल्द से जल्द signalAllAcceptedCredentials(options) में फिर से जोड़ा जाना चाहिए
ताकि यह फिर से दिखाई दे सके, यह मानते हुए कि Authenticator इसका समर्थन करता है।ऊपर दिए गए स्क्रीनशॉट में, आप देख सकते हैं कि Google Chrome डिलीट का संकेत कैसे देता है। WebAuthn Signal API को डेस्कटॉप पर Google Password Manager के साथ टेस्ट किया जा सकता है।
WebAuthn Signal API को प्रभावी ढंग से लागू करने और क्लाइंट-साइड Authenticators पर Passkey मेटाडेटा के निर्बाध सिंक्रनाइज़ेशन को सुनिश्चित करने के लिए, निम्नलिखित सिफारिशों पर विचार करें:
signalAllAcceptedCredentials(options) एप्रोच के साथ शुरुआत
करें: यह दृष्टिकोण सुनिश्चित करता है कि सभी मेटाडेटा और क्रेडेंशियल आईडी एक ही विधि
में अपडेट किए जाते हैं, प्रक्रिया को सरल बनाते हैं और उपकरणों और प्लेटफार्मों पर स्थिरता
बनाए रखते हैं और साथ ही डिलीट किए गए या बासी (stale) क्रेडेंशियल्स को निष्क्रिय करते
हैं।signalUnknownCredential(options) के साथ
रीयल-टाइम मैसेजिंग: बड़े पैमाने (large-scale) की तैनाती में या जब तत्काल अपडेट की
आवश्यकता होती है, तो signalUnknownCredential(options) विधि के साथ रीयल-टाइम मैसेजिंग
का उपयोग करने पर विचार करें। यह विधि क्रेडेंशियल प्रबंधन की दक्षता और सटीकता को बढ़ा
सकती है, यह सुनिश्चित करते हुए कि अमान्य या पुराने क्रेडेंशियल्स चयन UI से तुरंत हटा दिए
जाएं।इन सुझावों का पालन करके, आप WebAuthn Signal API को प्रभावी ढंग से लागू कर सकते हैं, यह सुनिश्चित करते हुए कि Passkey मेटाडेटा अप-टू-डेट रहे और सभी क्लाइंट-साइड Authenticators पर सुसंगत रहे, जिससे Passkeys के लिए एक सहज और सुरक्षित यूज़र एक्सपीरियंस प्रदान किया जा सके।
WebAuthn स्टैंडर्ड लगातार विकसित हो रहा है, और मासिक आधार पर अधिक सुविधाओं से समृद्ध हो रहा है। WebAuthn Signal API की शुरूआत क्लाइंट-साइड Authenticators पर Passkey मेटाडेटा और विलोपन (deletions) के प्रबंधन में एक महत्वपूर्ण कदम है। यह API Relying Parties (RPs) और Authenticators के बीच जानकारी को सिंक (sync) रखने, और यह सुनिश्चित करने के महत्वपूर्ण यूज़ केसेस को संबोधित करता है कि अमान्य या पुरानी Passkeys हटा दी जाएं, जिससे यूज़र एक्सपीरियंस में सुधार होता है।
user.name और user.displayName जानकारी से संबंधित मुद्दों को हल करता है, जो चयन UI
में क्रेडेंशियल्स प्रस्तुत किए जाने पर भ्रम पैदा कर सकते हैं। इसके अतिरिक्त, यह रिवोक
किए गए या डिलीट किए गए Passkeys को हटाकर एक साफ और सुरक्षित क्रेडेंशियल चयन इंटरफ़ेस
बनाए रखने में मदद करता है।जैसे-जैसे WebAuthn स्टैंडर्ड विकसित होता है, इसे अपने प्रतिभागियों के विविध हितों से लाभ होता है, जो स्टैंडर्ड के विभिन्न हिस्सों को आगे बढ़ाते हैं। इन विकासों पर नज़र रखना नवीनतम संवर्द्धन (enhancements) के साथ अद्यतित रहने और यह सुनिश्चित करने के लिए महत्वपूर्ण है कि कार्यान्वयन नवीनतम सर्वोत्तम प्रथाओं और मानकों के साथ संरेखित रहें। WebAuthn समुदाय नवाचार को बढ़ावा देना जारी रखता है, जिससे ऑथेंटिकेशन अधिक सुरक्षित और यूज़र-फ्रेंडली हो जाता है।
Related Articles
Table of Contents