getClientCapabilities() की मदद से, WebAuthn की सुविधा का आसानी से पता लगाना

पब्लिश होने की तारीख: 15 जनवरी, 2025

WebAuthn, कई खास सुविधाएं देता है. जैसे, हाइब्रिड प्रोटोकॉल के लिए ब्लूटूथ से इंटरैक्ट करना, पासकी उपलब्ध कराने वाली कंपनियों से संपर्क करना, और अपने-आप भरने की सुविधा में पासकी का सुझाव देना. हालांकि, अलग-अलग क्लाइंट और पुष्टि करने वाले ऐप्लिकेशन, WebAuthn की सुविधाओं के लिए अलग-अलग लेवल पर सहायता उपलब्ध कराते हैं. इस अंतर की वजह से, उपयोगकर्ता को अलग-अलग तरह का अनुभव मिल सकता है. ऐसा हो सकता है कि कुछ उपयोगकर्ताओं को गड़बड़ियां दिखें या वे पुष्टि करने के कुछ विकल्पों का इस्तेमाल न कर पाएं. डेवलपर को क्लाइंट की क्षमताओं के बारे में जानकारी देने से, उन्हें ज़्यादा बेहतर ऑथेंटिकेशन फ़्लो बनाने में मदद मिलती है. ये फ़्लो, इन बदलावों के हिसाब से काम करते हैं.

PublicKeyCredential.getClientCapabilities() तरीके से, रिलाइंग पार्टियों को यह पता चलता है कि ब्राउज़र पर WebAuthn की कौनसी सुविधाएं काम करती हैं. यह तरीका, उन सुविधाओं की सूची का प्रॉमिस दिखाता है जो काम करती हैं. इससे डेवलपर, क्लाइंट की खास सुविधाओं के आधार पर पुष्टि करने के अनुभव और वर्कफ़्लो को अपनी ज़रूरत के हिसाब से बना सकते हैं.

इनके साथ काम करता है

Browser Support

  • Chrome: 133.
  • Edge: 133.
  • Firefox: 135.
  • Safari: 17.4.

Source

getClientCapabilities()

getClientCapabilities() एक WebAuthn API है. इसकी मदद से, भरोसा करने वाली पार्टियां यह तय कर सकती हैं कि कौनसी सुविधाएं उपलब्ध हैं. एपीआई का इस्तेमाल करने के लिए, आपको PublicKeyCredential.getClientCapabilities() को कॉल करना होगा. जवाब में मिले प्रॉमिस से एक ऑब्जेक्ट मिलता है. इसमें सुविधाएं होती हैं. हर सुविधा के लिए, true या false के साथ उसकी उपलब्धता की जानकारी दी जाती है. अगर क्षमता undefined है, तो इसका मतलब है कि इसकी उपलब्धता के बारे में जानकारी नहीं है.

if (window.PublicKeyCredential &&
  if (PublicKeyCredential.getClientCapabilities) {
    const capabilities = await PublicKeyCredential.getClientCapabilities();
    if (capabilities.conditionalGet === true &&
        capabilities.passkeyPlatformAuthenticator === true) {
      // The browser supports passkeys and the conditional mediation.
    }
  }
}

conditionalCreate

अगर उपयोगकर्ता ने पहले ही क्रेडेंशियल बनाने की सहमति दी है, तो ब्राउज़र, प्रमुख मोडल यूज़र इंटरफ़ेस (यूआई) के बिना क्रेडेंशियल बना सकता है.

conditionalGet

ब्राउज़र, अपने-आप भरने वाले डायलॉग के हिस्से के तौर पर पासकी दिखाकर पुष्टि कर सकता है. इसके लिए, उसे मुख्य मोडल यूज़र इंटरफ़ेस (यूआई) दिखाने की ज़रूरत नहीं होती. मौजूदा समतुल्य वैल्यू PublicKeyCredential.isConditionalMediationAvailable() है.

hybridTransport

डिवाइस, ब्लूटूथ का इस्तेमाल कर सकता है, ताकि ब्राउज़र क्रेडेंशियल बना सके. साथ ही, हाइब्रिड प्रोटोकॉल का इस्तेमाल करके, अलग-अलग डिवाइसों पर इसकी पुष्टि कर सके. इसका आम तौर पर मतलब यह होता है कि ब्राउज़र, क्यूआर कोड दिखा सकता है, ताकि उपयोगकर्ता उसे स्कैन कर सके और उस फ़ोन से साइन इन कर सके जिस पर क्रेडेंशियल मौजूद है.

passkeyPlatformAuthenticator

ब्राउज़र, क्रेडेंशियल बना सकता है और उपयोगकर्ता की पुष्टि करने वाले प्लैटफ़ॉर्म ऑथेंटिकेटर या हाइब्रिड प्रोटोकॉल के ज़रिए इसका इस्तेमाल करने वाले किसी अन्य डिवाइस की मदद से पुष्टि कर सकता है. hybridTransport || userVerifyingPlatformAuthenticator के बराबर.

relatedOrigins

ब्राउज़र, क्रेडेंशियल बना सकता है और उससे पुष्टि कर सकता है. हालांकि, यह क्रेडेंशियल आरपी आईडी से मेल नहीं खाना चाहिए. ऐसा तब तक किया जा सकता है, जब तक इसे संबंधित ऑरिजिन फ़ाइल में शामिल किया गया हो.

signalAllAcceptedCredentials

ब्राउज़र, पासकी उपलब्ध कराने वाली कंपनी को सर्वर पर उपलब्ध क्रेडेंशियल का सिग्नल दे सकता है, ताकि पासकी उपलब्ध कराने वाली कंपनी, पासकी की सूची को सर्वर के साथ अपडेट रख सके.

signalCurrentUserDetails

ब्राउज़र, पासवर्ड की सुविधा देने वाली कंपनी के सर्वर को उपयोगकर्ता की जानकारी भेज सकता है. जैसे, उपयोगकर्ता नाम और डिसप्ले नेम. इससे पासवर्ड की सुविधा देने वाली कंपनी, सर्वर के साथ पासवर्ड की जानकारी को अपडेट रख सकती है.

signalUnknownCredential

ब्राउज़र, पासकी की सेवा देने वाली कंपनी को सर्वर पर मिटाए गए क्रेडेंशियल की सूचना दे सकता है, ताकि पासकी की सेवा देने वाली कंपनी, पासकी की सूची को सर्वर के साथ सिंक रख सके.

userVerifyingPlatformAuthenticator

ब्राउज़र, प्लैटफ़ॉर्म ऑथेंटिकेटर पर क्रेडेंशियल बना सकता है और उसकी पुष्टि कर सकता है. इसका मतलब यह नहीं है कि ब्राउज़र, हाइब्रिड प्रोटोकॉल के साथ काम करता है. मौजूदा समतुल्य वैल्यू PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable() है.

extensions

आरपी, getClientCapabilities() की मदद से उपलब्ध एक्सटेंशन भी तय कर सकते हैं.

if (capabilities['extension:appid'] === true) {
  // appId extension is supported
}

आइडेंटिफ़ायर के प्रीफ़िक्स में extension: होता है. इसके बाद, एक्सटेंशन का नाम होता है. एक्सटेंशन के नामों के लिए, IANA में तय किए गए WebAuthn एक्सटेंशन आइडेंटिफ़ायर देखें.

ज़्यादा जानें

पासकी के बारे में ज़्यादा जानने के लिए, पासकी की मदद से बिना पासवर्ड के लॉगिन करना लेख पढ़ें.