जानें कि WebAuthn Signal API क्लाइंट-साइड ऑथेंटिकेटर्स पर पासकी को आसानी से डिलीट करने और मेटाडेटा (user.name, user.displayName) को अपडेट करने में कैसे मदद करता है।
Vincent
Created: August 8, 2025
Updated: August 8, 2025
See the original blog version in English here.
Our mission is to make the Internet a safer place, and the new login standard passkeys provides a superior solution to achieve that. That's why we want to help you understand passkeys and its characteristics better.
पासकी इकोसिस्टम लगातार विकसित हो रहा है। इस बदलाव को आसान बनाने के लिए, इसके पीछे का WebAuthn स्टैंडर्ड भी तेज़ी से बदल रहा है। नई सुविधाएँ अक्सर GitHub में एक तकनीकी एक्सप्लेनर के साथ शुरू होती हैं और फिर पर्याप्त चर्चा के बाद स्टैंडर्ड में एक पुल रिक्वेस्ट के रूप में विकसित होती हैं। हाल ही में, यह पुल रिक्वेस्ट स्टैंडर्ड ड्राफ्ट में WebAuthn Signal API के रूप में जोड़ी गई थी। इस लेख में, हम इन विषयों पर बात करेंगे:
जनवरी 2025 में इस ब्लॉग पोस्ट को अपडेट करते समय, WebAuthn Signal API Chrome 132 से डिफ़ॉल्ट रूप से सक्षम है और इसे पहले रिपोर्टिंग API के नाम से जाना जाता था, लेकिन उसी नाम के दूसरे API के साथ टकराव से बचने के लिए इसका नाम बदल दिया गया।
WebAuthn Signal API क्लाइंट-साइड पर पासकी के प्रबंधन से संबंधित विशिष्ट उपयोग के मामलों को संबोधित करता है। विशेष रूप से, यह रिलाइंग पार्टी (RP) और ऑथेंटिकेटर्स के बीच जानकारी को सिंक में रखने में मदद करता है, जो क्लाइंट-साइड ऑपरेटिंग सिस्टम का हिस्सा हैं। निम्नलिखित महत्वपूर्ण उपयोग के मामले मौजूद हैं:
जब एक पासकी बनाई जाती है, तो इसमें कई जानकारी शामिल होती है: user.id
, user.name
, और user.displayName
। पासकी की पहचान खुद यूनिक क्रेडेंशियल आईडी के माध्यम से की जाती है।
user.id
महत्वपूर्ण है क्योंकि इसका उपयोग पासकी को यूज़र के अकाउंट से मिलाने के लिए किया जाता है।निम्नलिखित चित्रण एक सामान्य, सरल डेटाबेस संरचना दिखाता है जो बताता है कि कौन सी जानकारी आमतौर पर किस फ़ील्ड में संग्रहीत की जाएगी:
यह समझना महत्वपूर्ण है कि जबकि user.name
(अक्सर एक ईमेल पता) और user.displayName
(एक अधिक अनुकूल, पठनीय नाम) यूज़र को चयन UI में अपने अकाउंट की पहचान करने में मदद करते हैं, एक पासकी और एक अकाउंट के बीच वास्तविक संबंध user.id
और क्रेडेंशियल आईडी के माध्यम से बनाए रखा जाता है:
user.id
का उपयोग करके विशिष्ट रूप से पहचाना और अकाउंट से मिलाया जाता है।एक समस्या तब उत्पन्न होती है जब user.name
, जो एक ईमेल पता हो सकता है, बदल जाता है। वर्तमान में, इस बदलाव को सीधे क्लाइंट-साइड ऑथेंटिकेटर पर अपडेट करने का कोई तंत्र नहीं है। user.name
विभिन्न कारणों से बदल सकता है, जैसे जब कोई यूज़र अपना ईमेल पता अपडेट करता है। सर्वर साइड पर अकाउंट के मेटा-डेटा में इस बदलाव के बावजूद, पुराना user.name
क्रेडेंशियल चयन UI में दिखाई देता रहेगा, जिससे यूज़र्स को भ्रम हो सकता है।
इस समस्या का समाधान यह है कि अपडेट किए गए user.name
और उसी user.id
के साथ एक नई पासकी बनाई जाए, और फिर मौजूदा पासकी को ओवरराइट कर दिया जाए। हालाँकि, यह दृष्टिकोण कई कारणों से असुविधाजनक है:
user.id
में प्रति रिलाइंग पार्टी आईडी केवल एक पासकी हो सकती है, जिसका अर्थ है कि पुरानी पासकी को एक नई से बदलना होगा, जो एक अतिरिक्त कदम है।ईमेल पते, फ़ोन नंबर और अन्य पहचानकर्ता नियमित रूप से बदल सकते हैं। user.name
और user.displayName
को सीधे ऑथेंटिकेटर पर अपडेट करने के एक सीधे तरीके के बिना, यूज़र्स को एक स्थायी समस्या का सामना करना पड़ सकता है जहाँ वे अपने पुराने ईमेल पते से जुड़ी पासकी देखते हैं और उसे चुनना पड़ता है। यह स्थिति उस सहज अनुभव को कमजोर करती है जिसे पासकी प्रदान करने का लक्ष्य रखती है। WebAuthn Signal API इस समस्या को हल करने का लक्ष्य रखता है, जिससे रिलाइंग पार्टीज़ को नई पासकी बनाने की आवश्यकता के बिना पासकी के मेटा-डेटा में अपडेट की रिपोर्ट करने की अनुमति मिलती है। इससे पहले कि हम समझाएं कि Signal API को कैसे लागू किया जाए, हम दूसरे महत्वपूर्ण उपयोग के मामले का पता लगाएंगे जिसे यह संबोधित करता है।
एक और महत्वपूर्ण उपयोग का मामला क्लाइंट-साइड ऑथेंटिकेटर पर पासकी को डिलीट करना है। समय के साथ, यूज़र्स पासकी प्रबंधन सूची के माध्यम से क्रेडेंशियल्स को रद्द कर सकते हैं या अपने अकाउंट्स को डिलीट कर सकते हैं, और यह सुनिश्चित करना आवश्यक हो जाता है कि इन क्रेडेंशियल्स को क्लाइंट-साइड ऑथेंटिकेटर से हटा दिया जाए ताकि वे भविष्य के क्रेडेंशियल चयन UI (कंडीशनल UI / पासकी ऑटोफिल) में दिखाई न दें।
इस कार्यक्षमता की आवश्यकता कई परिदृश्यों में उत्पन्न होती है:
यूज़र के दृष्टिकोण से, यह समझना मुश्किल है कि उनके अकाउंट सेटिंग में, ऊपर दिए गए जैसे डायलॉग में डिलीट करने से इस क्लाइंट पर पासकी नहीं हटती है।
क्लाइंट-साइड पर पासकी को डिलीट करने के सीधे तरीके के बिना, ये पुरानी या अमान्य क्रेडेंशियल्स चयन UI को अव्यवस्थित करती रहती हैं, जिससे भ्रम होता है। यूज़र्स उन पासकी को देख सकते हैं और उपयोग करने का प्रयास कर सकते हैं जो अब मान्य नहीं हैं, जिसके परिणामस्वरूप असफल प्रमाणीकरण प्रयास और एक खराब यूज़र अनुभव होता है।
WebAuthn Signal API को लागू करने में कई चरण और विचार शामिल हैं ताकि यह सुनिश्चित हो सके कि कार्यक्षमता सही और सुरक्षित रूप से एकीकृत है। Signal API रिलाइंग पार्टीज़ (RPs) को क्लाइंट-साइड ऑथेंटिकेटर पर पासकी डिलीट करने या क्रेडेंशियल्स को अपडेट करने की अनुमति देता है। यह खंड कार्यान्वयन के लिए प्रमुख विचारों और चरणों की रूपरेखा तैयार करता है।
WebAuthn Signal API को लागू करते समय, निम्नलिखित विचारों को ध्यान में रखना महत्वपूर्ण है:
गोपनीयता का संरक्षण (Privacy Preserving): WebAuthn Signal API को यूज़र की गोपनीयता को संरक्षित करने के लिए डिज़ाइन किया गया है क्योंकि यह WebAuthn की नींव में से एक है। इसका मतलब है कि RP को इस बारे में कोई प्रतिक्रिया नहीं दी जाती है कि अनुरोधित परिवर्तन संसाधित किया गया था या नहीं। API चुपचाप काम करता है ताकि क्रेडेंशियल्स की स्थिति के बारे में जानकारी के किसी भी संभावित रिसाव को रोका जा सके।
ऑथेंटिकेटर की उपलब्धता (Authenticator Availability): WebAuthn Signal API की प्रभावशीलता ऑथेंटिकेटर की उपलब्धता पर निर्भर करती है। इसमें भौतिक उपलब्धता (जैसे, सुरक्षा कुंजी की उपस्थिति) और सॉफ्टवेयर समर्थन (जैसे, ब्राउज़र और ऑपरेटिंग सिस्टम संगतता) दोनों शामिल हैं। ब्राउज़र केवल तभी कार्रवाई कर सकता है जब ऑथेंटिकेटर सुलभ हो और बायोमेट्रिक प्रमाणीकरण की आवश्यकता के बिना आवश्यक संचालन का समर्थन करता हो।
डोमेन प्रतिबंध (Domain Restrictions): API यह सुनिश्चित करता है कि केवल एक विशिष्ट डोमेन से जुड़ी रिलाइंग पार्टी ही उस डोमेन से संबंधित क्रेडेंशियल्स में बदलाव का अनुरोध कर सकती है। यह तीसरे पक्षों द्वारा अनधिकृत संशोधनों को रोकने के लिए एक सुरक्षा उपाय है।
कुंजी के रूप में क्रेडेंशियल आईडी (Credential ID as Key): पासकी का संदर्भ देते समय, क्रेडेंशियल आईडी WebAuthn Signal API द्वारा उपयोग की जाने वाली प्राथमिक कुंजी है। यह आईडी क्लाइंट-साइड ऑथेंटिकेटर पर पासकी को विशिष्ट रूप से पहचानती है। API RPs को पासकी से जुड़े मेटा-डेटा को बदलने या यह संकेत देने की अनुमति देता है कि कुछ पासकी को अब एक्सेस नहीं किया जाना चाहिए, लेकिन केवल क्रेडेंशियल आईडी के माध्यम से। यदि कोई ऑथेंटिकेटर किसी विशिष्ट क्रेडेंशियल आईडी को नहीं जानता है, तो वह इसे चुपचाप अनदेखा कर देगा।
ये विचार WebAuthn Signal API के सबसे महत्वपूर्ण पहलुओं को समझने के लिए आवश्यक हैं ताकि यह सही ढंग से काम करे।
WebAuthn Signal API रिलाइंग पार्टीज़ (RPs) के लिए क्लाइंट-साइड ऑथेंटिकेटर्स पर पासकी से जुड़े मेटाडेटा को अपडेट करने के लिए एक सुव्यवस्थित तंत्र प्रदान करता है। यह सुनिश्चित करने के लिए विशेष रूप से महत्वपूर्ण है कि यूज़र्स को क्रेडेंशियल चयन UI में सटीक और अद्यतित जानकारी दिखाई दे, बिना अनावश्यक रूप से नई पासकी बनाए। यहाँ बताया गया है कि API यह कैसे होने देता है:
signalCurrentUserDetails(options) के साथ मेटाडेटा अपडेट करना
Signal API में signalCurrentUserDetails(options)
मेथड विशेष रूप से पासकी के मेटाडेटा को अपडेट करने के लिए डिज़ाइन किया गया है। यह मेथड RPs को user.name
और user.displayName
के लिए वर्तमान मान प्रदान करने की अनुमति देता है।
यहाँ प्रक्रिया कैसे काम करती है (यह भी देखें WebAuthn लेवल 3 स्टैंडर्ड)।
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", });
स्थानीय मेटाडेटा को अपडेट करना: स्थानीय रूप से (ऑथेंटिकेटर पर) उपलब्ध क्रेडेंशियल्स की तलाश करें जो rpId
और userId
से मेल खाते हैं। सभी मेल खाने वाले क्रेडेंशियल्स के लिए, ऑथेंटिकेटर क्रेडेंशियल के name
और displayName
को अपडेट करेगा।
गोपनीयता का संरक्षण: प्रक्रिया को गोपनीयता-संरक्षण के लिए डिज़ाइन किया गया है। Signal API RP को इस बारे में कोई प्रतिक्रिया नहीं देता है कि अपडेट सफलतापूर्वक संसाधित किए गए थे या नहीं, जिससे क्रेडेंशियल्स की स्थिति के बारे में जानकारी का कोई रिसाव नहीं होता है।
डिवाइसों में संगति: नियमित रूप से signalCurrentUserDetails(options)
मेथड चलाकर, RPs यह सुनिश्चित कर सकते हैं कि पासकी के लिए मेटाडेटा विभिन्न डिवाइसों और प्लेटफार्मों पर सुसंगत बना रहे जहाँ यूज़र प्रमाणित हो सकता है। यह दृष्टिकोण क्रेडेंशियल चयन UI में पुरानी या गलत जानकारी प्रदर्शित होने की संभावना को कम करता है।
उपरोक्त स्क्रीनशॉट में, आप देख सकते हैं कि Google Chrome यूज़र को इस तरह के अपडेट का संकेत कैसे देता है। WebAuthn Signal API Chrome 130 का हिस्सा है और इसे डेस्कटॉप पर Google पासवर्ड मैनेजर के साथ टेस्ट किया जा सकता है यदि प्रायोगिक वेब सुविधाएँ ध्वज सक्रिय है।
WebAuthn Signal API रिलाइंग पार्टीज़ (RPs) के लिए क्लाइंट-साइड ऑथेंटिकेटर्स से पासकी को डिलीट करने का संकेत देने के लिए तंत्र प्रदान करता है। यह सुनिश्चित करने के लिए आवश्यक है कि पुरानी या अमान्य क्रेडेंशियल्स क्रेडेंशियल चयन UI में दिखाई न दें, इस प्रकार एक सुव्यवस्थित और सुरक्षित यूज़र अनुभव बनाए रखा जा सके। पासकी को स्थानीय रूप से डिलीट करने के दो तरीके हैं: signalUnknownCredential(options)
और signalAllAcceptedCredentials)(options)
। पहले का उपयोग उन स्थितियों में किया जा सकता है जहाँ यूज़र प्रमाणित नहीं है, जबकि बाद वाले का उपयोग तब किया जा सकता है जब यूज़र प्रमाणित हो। इसलिए, गोपनीयता कारणों से बाद वाले को प्राथमिकता दी जानी चाहिए।
यहाँ बताया गया है कि दोनों मेथड कैसे काम करते हैं:
signalUnknownCredential(options)
मेथड में rpId
(रिलाइंग पार्टी आईडी) और credentialId
(डिलीट किए जाने वाले क्रेडेंशियल का यूनिक आइडेंटिफ़ायर) शामिल हैं।PublicKeyCredential.signalUnknownCredential({ rpId: "example.com", credentialId: "aabbcc", // credential id the user just tried, base64url });
मेथड को कॉल करना: RPs इस मेथड को तब कॉल करते हैं जब वे पता लगाते हैं कि किसी क्रेडेंशियल को डिलीट किया जाना चाहिए। यह एक अमान्य क्रेडेंशियल के साथ प्रमाणीकरण प्रयास के तुरंत बाद, अकाउंट डिलीट करने के दौरान, या जब कोई यूज़र अकाउंट सेटिंग्स के माध्यम से क्रेडेंशियल रद्द करता है, हो सकता है।
मेथड को संभालना: जब signalUnknownCredential(options)
मेथड को कॉल किया जाता है, तो क्लाइंट-साइड ऑथेंटिकेटर उन क्रेडेंशियल्स को खोजने की कोशिश करता है जो rpId
और credentialID
से मेल खाते हैं ताकि उन्हें हटाया जा सके। ऑथेंटिकेटर की क्षमताओं के आधार पर, क्रेडेंशियल हटा दिया जाता है या भविष्य के प्रमाणीकरण समारोहों में क्रेडेंशियल को छिपाने के लिए एक ऑथेंटिकेटर-विशिष्ट प्रक्रिया का उपयोग किया जाता है।
signalAllAcceptedCredentials(options)
मेथड में rpId
(रिलाइंग पार्टी आईडी), userId
और मान्य क्रेडेंशियल आईडी की एक सूची allAcceptedCredentialIds
(उन क्रेडेंशियल्स के यूनिक आइडेंटिफ़ायर की सूची जिन्हें रखा जाना चाहिए) शामिल हैं।PublicKeyCredential.signalAllAcceptedCredentials({ rpId: "example.com", userId: "aabbcc", // user handle, base64url. allAcceptedCredentialIds: ["bb"], });
मेथड को कॉल करना: RPs इस मेथड को तब कॉल करते हैं जब वे पता लगाते हैं कि किसी क्रेडेंशियल को डिलीट किया जाना चाहिए और मान्य क्रेडेंशियल्स की एक सूची का संकेत देते हैं। क्रेडेंशियल्स को डिलीट करने के लिए इस मेथड को signalUnknownCredential(options)
पर प्राथमिकता दी जानी चाहिए।
मेथड को संभालना: जब signalAllAcceptedCredentials(options)
मेथड को कॉल किया जाता है, तो क्लाइंट-साइड ऑथेंटिकेटर rpId
और userId
का मिलान करता है। ऑथेंटिकेटर उन सभी स्थानीय क्रेडेंशियल्स को देखता है जो rpId
और userId
से मेल खाते हैं। परिणाम की तुलना allAcceptedCredentialIds
से की जाती है। यदि स्थानीय क्रेडेंशियल्स हैं जो allAcceptedCredentialIds
में नहीं हैं, तो इन क्रेडेंशियल्स को स्थानीय रूप से हटा दिया जाता है (या ऑथेंटिकेटर के आधार पर छिपा दिया जाता है)।
क्रेडेंशियल्स को अनहाइड करें: यदि क्रेडेंशियल्स केवल छिपाए गए हैं (ऑथेंटिकेटर के आधार पर) और अब allAcceptedCredentialIds
का हिस्सा हैं, तो ये क्रेडेंशियल्स भविष्य के प्रमाणीकरण समारोहों में फिर से मौजूद होंगे।
उपयोगी टिप्स:
signalAllAcceptedCredentials(options)
का उपयोग करते समय यह ध्यान रखना महत्वपूर्ण है कि इस मेथड को निष्पादित करते समय ऑथेंटिकेटर हमेशा कनेक्ट नहीं हो सकते हैं। परिणामस्वरूप, रिलाइंग पार्टीज़ signalAllAcceptedCredentials(options)
को समय-समय पर चलाने पर विचार कर सकती हैं, जैसे कि हर साइन-इन के दौरान, यह सुनिश्चित करने के लिए कि सभी क्रेडेंशियल्स अद्यतित हैं।allAcceptedCredentialIds
) की सूची निर्दिष्ट करते समय सतर्क रहना चाहिए। इस सूची में शामिल नहीं किए गए क्रेडेंशियल्स को ऑथेंटिकेटर द्वारा छिपाया या हटाया जा सकता है, जो संभावित रूप से अपरिवर्तनीय हो सकता है। मान्य क्रेडेंशियल्स को गलती से छोड़े जाने से रोकने के लिए, यह सुनिश्चित करना महत्वपूर्ण है कि सूची पूरी हो। यदि कोई मान्य क्रेडेंशियल आईडी गलती से छूट जाती है, तो इसे जल्द से जल्द signalAllAcceptedCredentials(options)
में फिर से जोड़ा जाना चाहिए ताकि यह फिर से दिखाई दे, यह मानते हुए कि ऑथेंटिकेटर इसका समर्थन करता है।उपरोक्त स्क्रीनशॉट में, आप देख सकते हैं कि Google Chrome डिलीट का संकेत कैसे देता है। WebAuthn Signal API Chrome 132 का हिस्सा है और इसे डेस्कटॉप पर Google पासवर्ड मैनेजर के साथ टेस्ट किया जा सकता है।
WebAuthn Signal API को प्रभावी ढंग से लागू करने और क्लाइंट-साइड ऑथेंटिकेटर्स में पासकी मेटाडेटा के सहज सिंक्रनाइज़ेशन को सुनिश्चित करने के लिए, निम्नलिखित सिफारिशों पर विचार करें:
signalAllAcceptedCredentials(options)
दृष्टिकोण से शुरू करें: यह दृष्टिकोण सुनिश्चित करता है कि सभी मेटाडेटा और क्रेडेंशियल आईडी एक ही मेथड में अपडेट हो जाएं, जिससे प्रक्रिया सरल हो जाती है और डिवाइसों और प्लेटफार्मों पर संगति बनी रहती है और साथ ही डिलीट किए गए या पुराने क्रेडेंशियल्स को निष्क्रिय कर दिया जाता है।signalUnknownCredential(options)
के साथ रीयल-टाइम मैसेजिंग: बड़े पैमाने पर परिनियोजन में या जब तत्काल अपडेट की आवश्यकता हो, तो signalUnknownCredential(options)
मेथड के साथ रीयल-टाइम मैसेजिंग का उपयोग करने पर विचार करें। यह मेथड क्रेडेंशियल प्रबंधन की दक्षता और सटीकता को बढ़ा सकता है, यह सुनिश्चित करता है कि अमान्य या पुराने क्रेडेंशियल्स को चयन UI से तुरंत हटा दिया जाए।इन सिफारिशों का पालन करके, आप WebAuthn Signal API को प्रभावी ढंग से लागू कर सकते हैं, यह सुनिश्चित करते हुए कि पासकी मेटाडेटा सभी क्लाइंट-साइड ऑथेंटिकेटर्स में अद्यतित और सुसंगत बना रहे, जिससे पासकी के लिए एक सहज और सुरक्षित यूज़र अनुभव प्रदान किया जा सके।
WebAuthn स्टैंडर्ड लगातार विकसित हो रहा है, और हर महीने अधिक सुविधा संपन्न होता जा रहा है। WebAuthn Signal API का परिचय क्लाइंट-साइड ऑथेंटिकेटर्स पर पासकी मेटा-डेटा और डिलीट को प्रबंधित करने में एक महत्वपूर्ण कदम है। यह API रिलाइंग पार्टीज़ (RPs) और ऑथेंटिकेटर्स के बीच जानकारी को सिंक में रखने और यह सुनिश्चित करने के महत्वपूर्ण उपयोग के मामलों को संबोधित करता है कि अमान्य या पुरानी पासकी हटा दी जाएं, जिससे यूज़र अनुभव में सुधार हो।
user.name
और user.displayName
जानकारी से संबंधित मुद्दों को हल करता है, जो क्रेडेंशियल चयन UI में प्रस्तुत किए जाने पर भ्रम पैदा कर सकते हैं। इसके अतिरिक्त, यह रद्द या डिलीट की गई पासकी को हटाकर एक स्वच्छ और सुरक्षित क्रेडेंशियल चयन इंटरफ़ेस बनाए रखने में मदद करता है।जैसे-जैसे WebAuthn स्टैंडर्ड विकसित होता है, यह अपने प्रतिभागियों के विविध हितों से लाभान्वित होता है, जो स्टैंडर्ड के विभिन्न हिस्सों को आगे बढ़ाते हैं। इन विकासों पर नज़र रखना नवीनतम संवर्द्धन के साथ अद्यतित रहने और यह सुनिश्चित करने के लिए महत्वपूर्ण है कि कार्यान्वयन नवीनतम सर्वोत्तम प्रथाओं और मानकों के अनुरूप रहें। WebAuthn समुदाय नवाचार को चलाना जारी रखता है, जिससे प्रमाणीकरण अधिक सुरक्षित और यूज़र-फ्रेंडली बनता है।
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