Get your free and exclusive +45-page Authentication Analytics Whitepaper
ओवरव्यू पर वापस जाएं

9 WebAuthn Server Implementation Libraries की तुलना

यह पोस्ट आपको पासकी (passkeys) प्रदान करने के लिए सही WebAuthn सर्वर लाइब्रेरी खोजने में मदद करती है। 9 लाइब्रेरी की तुलना की गई है और सही लाइब्रेरी खोजने की रणनीति दी गई है।

Blog-Post-Author
Nicolai

बनाया गया: 15 दिसंबर 2023

अपडेट किया गया: 27 जुलाई 2026

9 WebAuthn Server Implementation Libraries की तुलना

यह पेज अपने-आप अनुवादित किया गया है। मूल अंग्रेज़ी संस्करण पढ़ें यहाँ.

PasskeysCheatsheet Icon

Passkeys चीटशीट. passkey कार्यक्रमों के लिए व्यावहारिक मार्गदर्शन, रोलआउट पैटर्न और KPIs।

Cheat sheet पाएं
मुख्य तथ्य
  • SimpleWebAuthn (TypeScript, 1,000 GitHub स्टार्स) को सबसे सहज (intuitive) माना गया है और यह पासकी इम्प्लीमेंटेशन के लिए सर्वर लाइब्रेरी और फ्रंटएंड ब्राउज़र लाइब्रेरी दोनों प्रदान करता है।
  • पासवर्ड ऑथेंटिकेशन के लिए एक की तुलना में पासकी ऑथेंटिकेशन के लिए कम से कम चार बैकएंड API एंडपॉइंट्स की आवश्यकता होती है, जिससे क्रिप्टोग्राफ़िक जटिलता को संभालने के लिए WebAuthn सर्वर लाइब्रेरी आवश्यक हो जाती है।
  • py_webauthn (Python) त्वरित परीक्षण के लिए आदर्श है: ऑथेंटिकेशन विकल्प सिंगल मेथड कॉल के साथ जेनरेट होते हैं और इसके लिए किसी फ्रेमवर्क कॉन्फ़िगरेशन की आवश्यकता नहीं होती है।
  • webauthn-framework (PHP/Symfony, 347 स्टार्स) सबसे व्यापक वैचारिक (conceptual) दस्तावेज़ प्रदान करता है, जो इसे स्क्रैच से पासकी के मूलभूत सिद्धांत सीखने वाले डेवलपर्स के लिए सबसे अच्छा बनाता है।
  • जब कोई लाइब्रेरी आपकी भाषा से मेल नहीं खाती है, तो व्यावसायिक और ओपन-सोर्स प्रोजेक्ट्स में सबसे व्यापक रूप से अपनाए जाने के कारण go-webauthn या SimpleWebAuthn अनुशंसित विकल्प हैं।

1. परिचय: WebAuthn Server Implementation#

2024 में डिजिटल कंपनियों के लिए सुरक्षित और सरल यूज़र ऑथेंटिकेशन प्रदान करना बहुत ज़रूरी है। पासकी (Passkeys), नए लॉगिन मानक के रूप में, इन ज़रूरतों को पूरा करने के लिए आदर्श समाधान हैं। हालाँकि, यूज़र के लिए पासकी का बेहतर यूज़र एक्सपीरियंस और सुरक्षा एक डेवलपर के रूप में उन्हें लागू करने की कीमत पर आता है। इम्प्लीमेंटेशन में कठिनाई इस तथ्य से उत्पन्न होती है कि पासकी अपेक्षाकृत नई हैं - यूज़र्स के लिए भी, और डेवलपर्स के लिए भी और पासवर्ड-आधारित ऑथेंटिकेशन की तुलना में उनका इम्प्लीमेंटेशन काफी चुनौतीपूर्ण हो सकता है। वास्तव में, पासवर्ड ऑथेंटिकेशन के लिए एक API एंडपॉइंट की तुलना में आपको पासकी ऑथेंटिकेशन के लिए कम से कम चार API एंडपॉइंट्स की आवश्यकता होती है।

पासकी ऑथेंटिकेशन प्रदान करने के लिए सर्वर साइड पर मुख्य घटकों में से एक WebAuthn सर्वर (ग्रीन लाइब्रेरी भाग) है। WebAuthn सर्वर व्यापक एंटरप्राइज़ स्टैक इंटीग्रेशन में कैसे फिट बैठता है, इस पर एक व्यापक गाइड के लिए, हमारा समर्पित लेख देखें।

स्रोत: Yubico

इस ब्लॉग पोस्ट में, हम कई WebAuthn सर्वर लाइब्रेरी / पैकेज / SDKs की तुलना करते हैं, अंतरों का विश्लेषण करते हैं और पासकी इम्प्लीमेंटेशन में नए डेवलपर्स के लिए एक सिफारिश प्रदान करते हैं।

2. मैं स्वयं पासकी कैसे लागू कर सकता हूँ?#

यह बेहतर ढंग से समझने के लिए कि सबसे पहले WebAuthn सर्वर लाइब्रेरी की आवश्यकता क्यों है, आइए देखें कि पासकी कैसे लागू की जा सकती हैं। सिद्धांत रूप में, वेबसाइटों और ऐप्स में पासकी को इंटिग्रेट करने के दो तरीके हैं:

  1. थर्ड-पार्टी पासकी समाधान (जैसे Corbado) का उपयोग करें
  2. नीचे दी गई WebAuthn सर्वर लाइब्रेरी में से किसी एक का उपयोग करके स्वयं पासकी लागू करें

यद्यपि थर्ड-पार्टी पासकी समाधान को इंटिग्रेट करना आसान है और आमतौर पर बहुत सारा इंजीनियरिंग समय बचाता है (विशेषकर एज केस, रखरखाव, रिकवरी, फ़ॉलबैक और बेहतर पासकी UX के लिए), कुछ डेवलपर्स सब कुछ खुद लागू करना पसंद करते हैं।

Demo Icon

Live demo में passkeys आज़माएं.

Passkeys आज़माएं

आइए देखें कि डू-इट-योरसेल्फ (do-it-yourself) पासकी इम्प्लीमेंटेशन कैसे काम करता है। एक बहुत ही बुनियादी सेटअप में, रजिस्टर (साइन-अप) और ऑथेंटिकेट (लॉगिन) करने के लिए एक तंत्र की आवश्यकता होती है। दोनों प्रक्रियाओं, जिन्हें WebAuthn सेरेमनीज़ (ceremonies) भी कहा जाता है, को अलग-अलग तरीके से हैंडल किया जाता है, भले ही समग्र प्रवाह एक समान स्कीमा का अनुसरण करता है:

  1. फ्रंटएंड (ब्राउज़र) एक साइन-अप या लॉगिन अनुरोध शुरू करता है और एक बैकएंड API एंडपॉइंट को कॉल करता है
  2. बैकएंड WebAuthn साइन-अप या लॉगिन पैरामीटर जेनरेट करता है। इन्हें क्रमशः PublicKeyCredentialCreationOptions और PublicKeyCredentialRequestOptions कहा जाता है। इन WebAuthn मापदंडों का सबसे महत्वपूर्ण भागों में से एक चुनौती (challenge) है। WebAuthn पैरामीटर फिर फ्रंटएंड पर वापस भेजे जाते हैं
  3. फ्रंटएंड इन WebAuthn मापदंडों को प्राप्त करता है और स्थानीय डिवाइस ऑथेंटिकेशन सिस्टम (उदा. Face ID, Touch ID, Windows Hello के माध्यम से) का उपयोग करके यूज़र की पहचान को वेरीफाई करने के लिए उनका उपयोग करता है। साइन-अप प्रक्रियाओं में, एक नया पब्लिक-प्राइवेट-की पेयर (public-private-key pair) बनाया जाता है, प्राइवेट की को स्थानीय रूप से स्टोर किया जाता है, जबकि पब्लिक की को सर्वर पर भेजा जाता है। लॉगिन प्रक्रियाओं में, चुनौती पर हस्ताक्षर किए जाते हैं पासकी की प्राइवेट की का उपयोग करके और एक अन्य बैकएंड API एंडपॉइंट पर भेजा जाता है।
  4. साइन-अप प्रक्रियाओं में, बैकएंड पब्लिक की प्राप्त करता है और इसे स्टोर करता है। लॉगिन में, बैकएंड साइन किए गए चैलेंज को प्राप्त करता है और इसकी अखंडता (integrity) को वेरीफाई करता है WebAuthn सर्वर का उपयोग करके।

चूँकि हर साइन-अप / लॉगिन प्रक्रिया में ये चरण शामिल होते हैं, इसलिए बैकएंड को यूज़र्स, पासकीज़ और साइन-अप / लॉगिन अनुरोधों का ट्रैक रखने की आवश्यकता होती है।

Igor Gjorgjioski Testimonial

Igor Gjorgjioski

Head of Digital Channels & Platform Enablement, VicRoads

We hit 80% mobile passkey activation across 5M+ users without replacing our IDP.

See how VicRoads scaled passkeys to 5M+ users — alongside their existing IDP.

Read the case study

यदि आप इस बारे में अधिक गहन ज्ञान प्राप्त करना चाहते हैं कि पासकी कैसे काम करती हैं और एक सरल इम्प्लीमेंटेशन कैसा दिखता है (थर्ड-पार्टी पासकी समाधान का उपयोग किए बिना), तो आप यहाँ हमारे ब्लॉग लेख की जांच कर सकते हैं।

वास्तविक जीवन के परिदृश्यों में, जब आप स्वयं पासकी लागू करते हैं, तो ध्यान रखें कि यह केवल साइन अप और लॉगिन करने के लिए आवश्यक API एंडपॉइंट्स और बुनियादी इम्प्लीमेंटेशन प्रदान करने के बारे में नहीं है। इसके अलावा, आपको निम्नलिखित विषयों और उपयोग के मामलों को संबोधित करने की आवश्यकता है:

  • डिवाइस प्रबंधन (Device management)
  • क्रॉस-प्लेटफ़ॉर्म और क्रॉस-डिवाइस लॉगिन प्रवाह
  • यूज़र प्रबंधन (User management)
  • सत्र प्रबंधन (Session management)
  • पासकी-रेडीनेस डिवाइस डिटेक्शन
  • यूज़र शिक्षा
  • फ़ॉलबैक ऑथेंटिकेशन विकल्प
  • रिकवरी तंत्र
  • अकाउंट शेयरिंग के विकल्प
  • उच्च अपनाने (high adoption) के लिए अनुकूलित पासकी क्रिएशन प्रवाह और पासकी लॉगिन प्रवाह

हालांकि, बुनियादी पासकी इम्प्लीमेंटेशन के लिए, आपको केवल WebAuthn मानक का पालन करने की आवश्यकता है। एक प्रसिद्ध और समर्थित WebAuthn सर्वर लाइब्रेरी को लागू करना आमतौर पर पर्याप्त होता है। लाइब्रेरी WebAuthn सर्वर पैरामीटर जेनरेट करती है और लॉगिन चैलेंजेस को वेरीफाई करती है, अनिवार्य रूप से आपके लिए क्रिप्टोग्राफ़िक और सबसे जटिल हिस्से को अपने हाथ में ले लेती है।

Slack Icon

Updates और support के लिए हमारी Passkeys Community से जुड़ें.

जुड़ें

3. WebAuthn Server Backend Libraries: एक तुलना#

सभी विश्लेषित WebAuthn सर्वर लाइब्रेरी पासकी ऑथेंटिकेशन प्रदान करने के लिए आवश्यक कार्यक्षमताएं प्रदान करती हैं। इसलिए, हमने निम्नलिखित मानदंडों पर विशेष ध्यान दिया है:

  • ऑथेंटिकेटर चयन मानदंड (Authenticator Selection Criteria): आप कुछ व्यवहार और सुरक्षा सुविधाओं (उदा. रेज़िडेंट कीज़ के निर्माण के लिए मजबूर करना) के लिए प्राथमिकताएं कैसे सेट कर सकते हैं?
  • ग्लोबल सेटिंग्स: आप आवश्यक कॉन्फ़िगरेशन को कितना केंद्रीकृत (centralize) कर सकते हैं?
  • दस्तावेज़ीकरण (Documentation): WebAuthn सर्वर लाइब्रेरी को कितनी अच्छी तरह प्रलेखित (documented) और अनुसरण करने में आसान बनाया गया है
  • उदाहरण: क्या कोई उदाहरण इम्प्लीमेंटेशन हैं जिन्हें आप संदर्भ के रूप में ले सकते हैं।

निम्नलिखित WebAuthn सर्वर लाइब्रेरी का विश्लेषण किया गया (दिसंबर 2023 में GitHub स्टार्स की घटती संख्या के आधार पर ऑर्डर किया गया):

StateOfPasskeys Icon

देखें कि वास्तव में कितने लोग passkeys इस्तेमाल करते हैं.

Adoption data देखें

3.1 TypeScript: SimpleWebAuthn#

  • प्रोग्रामिंग भाषा: Typescript
  • फ्रेमवर्क: Node.js
  • लेखक: Matthew Miller (Duo Security / Cisco)
  • स्टार्स: 1000
  • द्वारा उपयोग किया गया: 781
  • योगदानकर्ता: 19
  • FIDO Conformance: हाँ
  • ग्लोबल सेटिंग्स: नहीं
  • ऑथेंटिकेटर चयन मानदंड: जैसा कि W3C द्वारा सुझाया गया है (authenticatorAttachment, residentKey, requireResidentKey और userVerification वेरिएबल होने चाहिए जो W3C पेज पर भी समझाए गए हैं)
  • दस्तावेज़ीकरण: फास्ट सेटअप और उपयोग में आसानी पर ध्यान देने के साथ अच्छी तरह से संरचित, पासकी ज्ञान शामिल है उदा. यह समझाता है कि पासकी क्या हैं और वे कैसे काम करती हैं
  • उदाहरण: उदाहरण प्रोजेक्ट दस्तावेज़ों में उपलब्ध है
  • अनुशंसित डेटा संरचनाएं (Recommended data structures):
type UserModel = { id: string; username: string; currentChallenge?: string; }; /** * It is strongly advised that authenticators get their own DB * table, ideally with a foreign key to a specific UserModel. * * "SQL" tags below are suggestions for column data types and * how best to store data received during registration for use * in subsequent authentications. */ type Authenticator = { // SQL: Encode to base64url then store as `TEXT`. Index this column credentialID: Uint8Array; // SQL: Store raw bytes as `BYTEA`/`BLOB`/etc... credentialPublicKey: Uint8Array; // SQL: Consider `BIGINT` since some authenticators return atomic timestamps as counters counter: number; // SQL: `VARCHAR(32)` or similar, longest possible value is currently 12 characters // Ex: 'singleDevice' | 'multiDevice' credentialDeviceType: CredentialDeviceType; // SQL: `BOOL` or whatever similar type is supported credentialBackedUp: boolean; // SQL: `VARCHAR(255)` and store string array as a CSV string // Ex: ['usb' | 'ble' | 'nfc' | 'internal'] transports?: AuthenticatorTransport[]; };
  • अन्य विशेषताएँ: WebAuthn प्रतिक्रियाओं के लिए बेहतरीन WebAuthn Debugger और न केवल एक बैकएंड / सर्वर लाइब्रेरी प्रदान करता है, बल्कि फ्रंटएंड के लिए भी एक लाइब्रेरी (मूल रूप से क्लाइंट से कुछ Web Authentication APIs को लपेटना) प्रदान करता है
  • व्यक्तिगत मूल्यांकन: अब तक देखा गया सबसे सहज सेटअप और बहुत सीधा। इसके अलावा, यह उन कुछ लाइब्रेरीज़ में से एक है जो क्लाइंट इम्प्लीमेंटेशन में मदद करने के लिए ब्राउज़र लाइब्रेरी भी प्रदान करती है, जो इसे काफी उत्कृष्ट (outstanding) बनाता है। लाइब्रेरी का लेखक WebAuthn / पासकी समुदाय में अत्यधिक सक्रिय है।
  • GitHub लिंक: https://github.com/MasterKale/SimpleWebAuthn

3.2 .NET: fido2-net-lib#

  • प्रोग्रामिंग भाषा: C#
  • फ्रेमवर्क: .NET
  • लेखक: Anders à berg, Alex Seigler
  • स्टार्स: 962
  • द्वारा उपयोग किया गया: 200
  • योगदानकर्ता: 40
  • FIDO Conformance: हाँ
  • ग्लोबल सेटिंग्स: हाँ
  • ऑथेंटिकेटर चयन मानदंड: जैसा कि W3C द्वारा सुझाया गया है
  • दस्तावेज़ीकरण: बस कुछ नमूनों के साथ रीडमी (Readme), लाइब्रेरी की वेबसाइट पर कुछ पासकी इंटेलिजेंस (passkey intelligence)
  • उदाहरण: उदाहरण एकीकरण दिखाने के लिए डेमो नियंत्रक (Demo controller) और उदाहरण क्रेडेंशियल स्टोर उपलब्ध है
  • अनुशंसित डेटा संरचना (Recommended data structure):
public class StoredCredential { /// <summary> /// The Credential ID of the public key credential source. /// </summary> public byte[] Id { get; set; } /// <summary> /// The credential public key of the public key credential source. /// </summary> public byte[] PublicKey { get; set; } /// <summary> /// The latest value of the signature counter in the authenticator data from any ceremony using the public key credential source. /// </summary> public uint SignCount { get; set; } /// <summary> /// The value returned from getTransports() when the public key credential source was registered. /// </summary> public AuthenticatorTransport[] Transports { get; set; } /// <summary> /// The value of the BE flag when the public key credential source was created. /// </summary> public bool IsBackupEligible { get; set; } /// <summary> /// The latest value of the BS flag in the authenticator data from any ceremony using the public key credential source. /// </summary> public bool IsBackedUp { get; set; } /// <summary> /// The value of the attestationObject attribute when the public key credential source was registered. /// Storing this enables the Relying Party to reference the credent’al's attestation statement at a later time. /// </summary> public byte[] AttestationObject { get; set; } /// <summary> /// The value of the clientDataJSON attribute when the public key credential source was registered. /// Storing this in combination with the above attestationObject item enables the Relying Party to re-verify the attestation signature at a later time. /// </summary> public byte[] AttestationClientDataJson { get; set; } public List<byte[]> DevicePublicKeys { get; set; } public byte[] UserId { get; set; } public PublicKeyCredentialDescriptor Descriptor { get; set; } public byte[] UserHandle { get; set; } public string AttestationFormat { get; set; } public DateTimeOffset RegDate { get; set; } public Guid AaGuid { get; set; } }
  • अन्य विशेषताएँ: Bitwarden (स्टार्टअप passwordless.dev को Bitwarden द्वारा अधिग्रहित किया गया था) द्वारा उपयोग किया जाता है
  • व्यक्तिगत मूल्यांकन: पूरक सामग्री (supplementary material) की अच्छी मात्रा के साथ डेवलपर के अनुकूल लाइब्रेरी
  • GitHub लिंक: https://github.com/passwordless-lib/fido2-net-lib

3.3 Python: py_webauthn#

  • प्रोग्रामिंग भाषा: Python
  • फ्रेमवर्क: कोई विशिष्ट नहीं
  • लेखक: Duo Labs
  • स्टार्स: 727
  • द्वारा उपयोग किया गया: 912
  • योगदानकर्ता: 23
  • FIDO Conformance: N/A
  • ग्लोबल सेटिंग्स: नहीं
  • ऑथेंटिकेटर चयन मानदंड: जैसा कि W3C द्वारा सुझाया गया है
  • दस्तावेज़ीकरण: बहुत कम या नहीं के बराबर, पिछला पासकी ज्ञान आवश्यक है
  • उदाहरण: साइन अप और लॉगिन के लिए छोटे कोड नमूने शामिल हैं
  • अनुशंसित डेटा संरचना: N/A
  • अन्य विशेषताएँ: Python >= 3.8 की आवश्यकता है
  • व्यक्तिगत मूल्यांकन: कम संख्या में फ़ाइलों के साथ तुलनात्मक रूप से कॉम्पैक्ट लाइब्रेरी, आप कम समय में एक अवलोकन प्राप्त कर सकते हैं।
  • GitHub लिंक: https://github.com/duo-labs/py_webauthn

3.4 Ruby: webauthn-ruby#

  • प्रोग्रामिंग भाषा: Ruby
  • फ्रेमवर्क: Ruby on Rails
  • लेखक: Cedarcode
  • स्टार्स: 580
  • द्वारा उपयोग किया गया: 679
  • जेम डाउनलोड (Gem Downloads): 18 मिलियन
  • योगदानकर्ता: 27
  • FIDO Conformance: हाँ
  • ग्लोबल सेटिंग्स: हाँ
  • ऑथेंटिकेटर चयन मानदंड: जैसा कि W3C द्वारा सुझाया गया है
  • दस्तावेज़ीकरण: रीडमी ही दस्तावेज़ीकरण का एकमात्र स्रोत है
  • उदाहरण: N/A
  • अनुशंसित डेटा संरचना: N/A
  • अन्य विशेषताएँ: इस लाइब्रेरी के लिए रैपर (wrappers) भी उपलब्ध हैं (warden-webauthn, devise-passkeys)
  • व्यक्तिगत मूल्यांकन: चूँकि पूरक सामग्री काफी सीमित है, हम इस लाइब्रेरी की अनुशंसा तभी करेंगे जब आप Ruby और Passkeys दोनों से परिचित हों
  • GitHub लिंक: https://github.com/cedarcode/webauthn-ruby

3.5 Go: go-webauthn#

  • प्रोग्रामिंग भाषा: Go
  • फ्रेमवर्क: Gin, Echo, ¦ जैसे Go आधारित फ्रेमवर्क
  • लेखक: मूल रूप से Duo Labs / James Elliott द्वारा जारी
  • स्टार्स: 480
  • द्वारा उपयोग किया गया: 280
  • योगदानकर्ता: 18
  • FIDO Conformance: हाँ
  • ग्लोबल सेटिंग्स: हाँ
  • ऑथेंटिकेटर चयन मानदंड: जैसा कि W3C द्वारा सुझाया गया है
  • दस्तावेज़ीकरण: कुछ नमूनों के साथ रीडमी (Readme) ही दस्तावेज़ीकरण का एकमात्र स्रोत है
  • उदाहरण: उदाहरण रेपो उपलब्ध है
  • अनुशंसित डेटा संरचना: N/A
  • अन्य विशेषताएँ: फ़ाइलों की बड़ी संख्या, अवलोकन प्राप्त करने में कुछ समय लगता है
  • व्यक्तिगत मूल्यांकन: लोकप्रिय लाइब्रेरी जो एक बार जब आप इससे परिचित हो जाते हैं तो उपयोग करना आसान होता है, हालांकि हम सलाह देते हैं कि पहले से कुछ पासकी ज्ञान (वे कैसे काम करते हैं, प्रक्रियाएं कैसी दिखती हैं, आदि) सीखें।
  • GitHub लिंक: https://github.com/go-webauthn/webauthn

3.6 Java: java-webauthn-server#

  • प्रोग्रामिंग भाषा: Java
  • फ्रेमवर्क: Maven / Gradle
  • लेखक: Yubico
  • स्टार्स: 391
  • द्वारा उपयोग किया गया: N/A
  • योगदानकर्ता: 27
  • FIDO Conformance: N/A
  • ग्लोबल सेटिंग्स: हाँ
  • ऑथेंटिकेटर चयन मानदंड: जैसा कि W3C द्वारा सुझाया गया है।
  • दस्तावेज़ीकरण: रीडमी ही एकमात्र दस्तावेज़ीकरण है, लेकिन काफी विस्तृत है
  • उदाहरण: N/A
  • अनुशंसित डेटा संरचना: N/A
  • अन्य विशेषताएँ: एक क्रेडेंशियल रिपॉजिटरी इंटरफ़ेस के साथ आता है, जो आवश्यक डेटाबेस पुनर्प्राप्ति विधियों पर स्पष्ट मार्गदर्शन प्रदान करता है।
  • व्यक्तिगत मूल्यांकन: हालाँकि आपको डेटाबेस स्वयं प्रबंधित करना होगा, क्रेडेंशियल रिपॉजिटरी डेटाबेस डिज़ाइन प्रक्रिया में काफी मदद करती है। स्वाभाविक रूप से जावा इम्प्लीमेंटेशन बड़ी संख्या में फ़ाइलों के साथ आते हैं क्योंकि प्रत्येक एट्रिब्यूट को एक क्लास की आवश्यकता होती है जिसे आमतौर पर अपनी फ़ाइल में स्टोर किया जाता है। इससे एक अवलोकन प्राप्त करना अधिक समय लेने वाला कार्य बन जाता है।
  • GitHub लिंक: https://github.com/Yubico/java-webauthn-server

3.7 Rust: webauthn-rs#

  • प्रोग्रामिंग भाषा: Rust
  • फ्रेमवर्क: Rust आधारित (Rocket, Axum, ¦)
  • लेखक: Kanidm Identity Management Project
  • स्टार्स: 351
  • द्वारा उपयोग किया गया: 617
  • योगदानकर्ता: 25
  • FIDO Conformance: N/A
  • ग्लोबल सेटिंग्स: हाँ
  • ऑथेंटिकेटर चयन मानदंड: बहुत सीमित कॉन्फ़िगरेशन संभावनाएं। अन्य लाइब्रेरीज़ को W3C मानक के अनुसार ठीक से लागू किया गया है, जो अधिक कॉन्फ़िगरेबिलिटी प्रदर्शित करते हैं
  • दस्तावेज़ीकरण: ऑटोजेनरेटेड तकनीकी दस्तावेज़ीकरण मौजूद है, लेकिन बहुत विस्तृत नहीं है
  • उदाहरण: 3 अलग-अलग वेब फ्रेमवर्क के उदाहरणों के साथ ट्यूटोरियल रेपो उपलब्ध है
  • अनुशंसित डेटा संरचना: N/A
  • अन्य विशेषताएँ: लाइब्रेरी ने SUSE उत्पाद सुरक्षा द्वारा किए गए सुरक्षा ऑडिट (security audit) को पास कर लिया है।
  • व्यक्तिगत मूल्यांकन: सीमित कॉन्फ़िगरेबिलिटी और दस्तावेज़ों के कारण हम इस लाइब्रेरी की अनुशंसा तभी करेंगे जब आपका प्राथमिक फ्रेमवर्क Rust-आधारित हो और आप जानते हों कि पासकी कैसे काम करती हैं
  • GitHub लिंक: https://github.com/kanidm/webauthn-rs

3.8 PHP: webauthn-framework#

  • प्रोग्रामिंग भाषा: PHP
  • फ्रेमवर्क: Symfony
  • लेखक: Florent Morselli
  • स्टार्स: 347
  • द्वारा उपयोग किया गया: N/A
  • योगदानकर्ता: 18
  • FIDO Conformance: हाँ
  • ग्लोबल सेटिंग्स: हाँ
  • ऑथेंटिकेटर चयन मानदंड: जैसा कि W3C द्वारा सुझाया गया है।
  • दस्तावेज़ीकरण: तकनीकी विवरणों सहित व्यापक दस्तावेज़ीकरण, साथ ही पासकी को ज़मीनी स्तर से समझाना
  • उदाहरण: उदाहरण रेपो उपलब्ध है
  • अनुशंसित डेटा संरचना:
<?php declare(strict_types=1); namespace App\Entity; use App\Repository\PublicKeyCredentialSourceRepository; use DateTimeImmutable; use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Uid\AbstractUid; use Symfony\Component\Uid\Uuid; use Webauthn\PublicKeyCredentialSource as BasePublicKeyCredentialSource; use Webauthn\TrustPath\TrustPath; #[ORM\Table(name: 'pk_credential_sources')] #[ORM\Entity(repositoryClass: PublicKeyCredentialSourceRepository::class)] class PublicKeyCredentialSource extends BasePublicKeyCredentialSource { #[ORM\Column(type: Types::DATETIME_IMMUTABLE)] public readonly DateTimeImmutable $createdAt; #[ORM\Id] #[ORM\Column(type: Types::STRING, length: 255)] #[ORM\GeneratedValue(strategy: 'NONE')] private string $id; public function __construct( string $publicKeyCredentialId, string $type, array $transports, string $attestationType, TrustPath $trustPath, AbstractUid $aaguid, string $credentialPublicKey, string $userHandle, int $counter ) { $this->id = Uuid::v4()->toRfc4122(); $this->createdAt = new DateTimeImmutable(); parent::__construct($publicKeyCredentialId, $type, $transports, $attestationType, $trustPath, $aaguid, $credentialPublicKey, $userHandle, $counter); } public function getId(): string { return $this->id; } }
  • अन्य विशेषताएँ: N/A
  • व्यक्तिगत मूल्यांकन: उन लोगों के लिए अच्छा है जो पासकीज़ में प्रवेश करना चाहते हैं, लेकिन जिनके पास पूर्व ज्ञान नहीं है
  • GitHub लिंक: https://github.com/web-auth/webauthn-framework

3.9 Java: webauthn4j#

  • प्रोग्रामिंग भाषा: Java
  • फ्रेमवर्क: Maven
  • लेखक: WebAuthn4j
  • स्टार्स: 342
  • द्वारा उपयोग किया गया: N/A
  • योगदानकर्ता: 19
  • FIDO Conformance: हाँ
  • ग्लोबल सेटिंग्स: हाँ
  • ऑथेंटिकेटर चयन मानदंड: W3C द्वारा सुझाए गए UserVerificationRequirement पैरामीटर के मान discouraged, preferred, required के बजाय, webauthn4j बूलियन वेरिएबल के रूप में verificationRequired और userPrecenseRequired प्रदान करता है
  • दस्तावेज़ीकरण: सूखा, लेकिन कुछ कोड नमूनों के साथ व्यापक दस्तावेज़ीकरण उपलब्ध है
  • उदाहरण: उदाहरण रेपो उपलब्ध है
  • अनुशंसित डेटा संरचना: N/A
  • अन्य विशेषताएँ: N/A
  • व्यक्तिगत मूल्यांकन: दस्तावेज़ों को पढ़ना जल्दी ही उबाऊ और जटिल हो जाता है, क्योंकि यह सिर्फ एक बड़ा पेज है जो पूरी तरह से कार्यक्षमता पर केंद्रित है, न कि पासकी के पीछे के कॉन्सेप्ट पर।
  • GitHub लिंक: https://github.com/webauthn4j/webauthn4j

निम्नलिखित तालिका WebAuthn सर्वर लाइब्रेरीज़ का अवलोकन (overview) प्रदान करती है:

Substack Icon

Latest news के लिए हमारे Passkeys Substack को subscribe करें.

Subscribe करें

4. सिफारिशें: WebAuthn लाइब्रेरी लैंडस्केप को नेविगेट करना#

4.1 चरण 1: अपनी WebAuthn लाइब्रेरी चुनें#

चूँकि अधिकांश लाइब्रेरीज़ समान रूप से शक्तिशाली हैं और WebAuthn मानक को लागू करती हैं, इसलिए हम निम्नलिखित निर्णय-वृक्ष (decision-tree) की अनुशंसा करते हैं:

  • आपके फ्रेमवर्क और प्रोग्रामिंग भाषा में एक WebAuthn सर्वर लाइब्रेरी उपलब्ध है: हमने ऐसे फ्रेमवर्क लाइब्रेरी को सूचीबद्ध नहीं किया है जो ऊपर दी गई किसी लाइब्रेरी पर निर्भर करते हैं (उदा. Symfony और Laravel के लिए PHP कस्टमाइज़ेशन उपलब्ध हैं)। यदि कोई फ्रेमवर्क इम्प्लीमेंटेशन है, तो इसे चुनें क्योंकि यह आपको अपने वर्तमान फ्रेमवर्क संरचना में WebAuthn API कॉल्स को मूल रूप से लागू करने और स्टोरेज को लागू करने के लिए अपने डेटाबेस एब्सट्रैक्शन का उपयोग करने की अनुमति देता है।
  • आपकी प्रोग्रामिंग भाषा में एक WebAuthn सर्वर लाइब्रेरी उपलब्ध है: क्योंकि आपको बैकएंड API एंडपॉइंट्स की आवश्यकता है, अपनी मूल प्रोग्रामिंग भाषा में WebAuthn सर्वर लाइब्रेरी चुनें ताकि इसे मूल रूप से आपके वर्तमान API एंडपॉइंट्स में एम्बेड किया जा सके।
  • आपकी प्रोग्रामिंग भाषा में कोई WebAuthn सर्वर लाइब्रेरी उपलब्ध नहीं है: इस मामले में, आपको Corbado जैसे मैनेज्ड पासकी समाधान का उपयोग करने पर विचार करना चाहिए। यदि वह विकल्प नहीं है, तो हम go-webauthn या SimpleWebAuthn का उपयोग करने की सलाह देते हैं क्योंकि इनका सबसे बड़ा एडॉप्शन है, ये लाइटवेट हैं और बहुत सारे कमर्शियल और ओपन-सोर्स प्रोजेक्ट्स द्वारा भी उपयोग किए जाते हैं।

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

  • त्वरित परीक्षण के लिए: py_webauthn पैकेज उपयोग-के-लिए-तैयार कोड स्निपेट्स के साथ तत्काल इम्प्लीमेंटेशन प्रदान करता है। केवल एक मेथड कॉल से आप ऑथेंटिकेशन के लिए आवश्यक विकल्प जेनरेट कर सकते हैं। चूंकि आपको लाइब्रेरी को फ्रेमवर्क में एम्बेड करने और इसे कॉन्फ़िगर करने की आवश्यकता नहीं है, इसलिए यह त्वरित परीक्षण के लिए आदर्श है।
  • सहज इम्प्लीमेंटेशन के लिए: Typescript में लिखा गया SimpleWebauthn पैकेज सीधा और डेवलपर के अनुकूल है। py_webauthn की तरह इम्प्लीमेंटेशन बहुत न्यूनतम है, लेकिन इसके अतिरिक्त दस्तावेज़ भी हैं जो ऑथेंटिकेशन प्रक्रिया में आपका मार्गदर्शन करते हैं। हालांकि, py_webauthn के विपरीत, SimpleWebAuthn किसी स्पष्ट उदाहरण के साथ नहीं आता है जो बिना संशोधन के चलता हो।
  • गहरी समझ के लिए: PHP के लिए webauthn-framework लाइब्रेरी पासकी कॉन्सेप्ट्स पर ध्यान केंद्रित करने वाले व्यापक, संरचित दस्तावेज़ीकरण के साथ अलग है। webauthn4j जैसे अच्छी मात्रा में दस्तावेज़ वाली अन्य लाइब्रेरीज़ का मुख्य अंतर दस्तावेज़ों का डिज़ाइन और स्पष्टता है।

सर्वर साइड पर WebAuthn कैसे काम करता है, इसकी और भी गहरी समझ के लिए, आप WebAuthn RFC में WebAuthn Relying Party Operations के बहुत विस्तृत अनुभाग को पढ़ सकते हैं जो नया क्रेडेंशियल रजिस्टर करने (7.1) और ऑथेंटिकेशन असर्शन असर्शन को वेरीफाई करने (7.2) के लिए लागू किए जाने वाले प्रत्येक चरण का विवरण देता है।

4.2 चरण 2: अपने WebAuthn सर्वर विकल्प परिभाषित करें#

आपके पास मौजूद विशिष्ट पासकी और WebAuthn आवश्यकताओं का मूल्यांकन करें। इस ब्लॉग पोस्ट में, हमने माना है कि आप केवल डिस्कवरेबल क्रेडेंशियल्स (discoverable credentials) के रूप में पासकीज़ का समर्थन करना चाहते हैं। आपके उपयोग के मामले के लिए WebAuthn सर्वर SDK कॉन्फ़िगरेशन में पैरामीटर सही ढंग से सेट करने के लिए क्लाइंट-साइड navigator.credentials.create() और navigator.credentials.get() WebAuthn API कॉल्स के साथ PublicKeyCredentialCreationOptions और PublicKeyCredentialRequestOptions के बारे में पढ़ें।

4.3 चरण 3: डेटाबेस संरचना परिभाषित करें#

सभी WebAuthn सर्वर लाइब्रेरीज़ के लिए, आपको निम्नलिखित जानकारी को परसिस्ट (persist) / एक्सेस करने के लिए उचित डेटाबेस संरचना प्रदान करने की आवश्यकता होगी:

  • क्रेडेंशियल्स
  • यूज़र्स
  • चैलेंजेस
  • ऑथेंटिकेटर्स

कुछ लाइब्रेरीज़ के लिए, विशिष्ट सिफारिशें और उदाहरण हैं (यदि हमने उन्हें उपयोगी पाया, तो हमने उन्हें ऊपर प्रदान किया है)। यह पूरी तरह से समझना आवश्यक है कि कौन से WebAuthn फ़ील्ड कहाँ स्टोर किए जाने हैं। यह पहचानने पर विशेष ध्यान दें कि आप User ID (user.id) के लिए किस मान का उपयोग करना चाहते हैं। यहाँ हमारे पास एक अधिक विस्तृत स्पष्टीकरण है। इस बात पर भी विचार करें कि क्या होता है जब कोई यूज़र पासकी हटा सकता है। इसके अलावा, आप वैकल्पिक रूप से कुछ ऑथेंटिकेटर्स के उपयोग को सीमित कर सकते हैं। पासकीज़ से संबंधित मान्य ऑथेंटिकेटर्स की एक सूची यहाँ पाई जा सकती है। यदि आप सुरक्षा कुंजियों के अटेस्टेशन्स (attestations) का समर्थन और जांच भी करना चाहते हैं, तो यह एक पूरी तरह से अलग कहानी है। आप यहाँ अधिक जानकारी पा सकते हैं।

4.4 चरण 4: अपने उपयोगकर्ताओं के उपकरणों पर परीक्षण करें#

पहचानें कि आपके उपयोगकर्ता किन उपकरणों पर पासकी और फ़ॉलबैक ऑथेंटिकेशन विधियों का उपयोग करेंगे। यदि आप सुनिश्चित नहीं हैं कि आपके उपयोगकर्ता किन डिवाइस, ब्राउज़र और ऑपरेटिंग सिस्टम का उपयोग करते हैं, तो प्लेटफ़ॉर्म, ब्राउज़र और ऑपरेटिंग सिस्टम में पासकी-रेडीनेस के नवीनतम डेटा के लिए State of Passkeys देखें। यदि आपके पास पासकी एडॉप्शन और कुछ डिवाइस के पासकी-रेडीनेस शेयर पर विशिष्ट प्रश्न हैं, तो बेझिझक हमसे संपर्क करें। हमें आपको और अधिक जानकारी प्रदान करने और इस विषय पर आपकी सहायता करने में खुशी होगी (पासकी-रेडीनेस के संबंध में हमारी नवीनतम ब्लॉग पोस्ट भी देखें)। एक ऑब्सर्वेबिलिटी (observability) के दृष्टिकोण से, क्लाइंट-साइड WebAuthn विफलताओं और सर्वर वेरिफिकेशन अस्वीकृतियों (rejects) को अलग-अलग स्ट्रीम के रूप में रखें; क्लाइंट-साइड बकेट परिभाषाओं के लिए, WebAuthn त्रुटियों का उपयोग करें। इसके अलावा, आपको ध्यान में रखना चाहिए कि Windows 10 और Linux के लिए आपको समर्पित समाधान (dedicated solutions) के साथ आने की आवश्यकता होगी क्योंकि ये ऑपरेटिंग सिस्टम कम से कम (यदि बिल्कुल भी) पासकी सपोर्ट प्रदान करते हैं।

StateOfPasskeys Icon

देखें कि वास्तव में कितने लोग passkeys इस्तेमाल करते हैं.

Adoption data देखें

5. निष्कर्ष#

अब तक लगभग हर भाषा या फ्रेमवर्क के लिए एक अच्छी तरह से स्थापित WebAuthn सर्वर लाइब्रेरी मौजूद है। विभिन्न भाषाओं के पुस्तकालयों की तुलना करने पर कुछ कार्यान्वयनों की कोई स्पष्ट श्रेष्ठता (superiority) नहीं दिखाई देती है। बल्कि आपको उस फ्रेमवर्क / प्रोग्रामिंग भाषा का उपयोग करना चाहिए जिससे आप सबसे अधिक परिचित हैं। वैकल्पिक रूप से, यदि आप WebAuthn को स्वयं लागू नहीं करना चाहते हैं और साथ आने वाले सभी चीज़ों का ध्यान रखना चाहते हैं, तो आप Corbado जैसे एक समर्पित, प्री-बिल्ट पासकी-ऑथेंटिकेशन समाधान आज़मा सकते हैं। एक पासकी केंद्रित ऑल-इन-वन ऑथेंटिकेशन समाधान प्रस्तुत करते हुए, यह शानदार पासकी इंटेलिजेंस (passkey intelligence), सत्र प्रबंधन के साथ-साथ फ़ॉलबैक ऑथेंटिकेशन विधियों के साथ आता है, ताकि आप अपने उत्पाद को विकसित करने पर ध्यान केंद्रित कर सकें और ऑथेंटिकेशन की चिंता छोड़ सकें। आप इसे असीमित उपयोगकर्ताओं के साथ मुफ़्त में यहाँ आज़मा सकते हैं।

Corbado

Corbado के बारे में

Corbado बड़े पैमाने पर consumer authentication चलाने वाली CIAM टीमों के लिए Authentication Intelligence Platform है। हम आपको वह दिखाते हैं जो IDP logs और सामान्य analytics tools नहीं दिखा सकते: कौन-से devices, OS versions, browsers और credential managers passkeys को support करते हैं, क्यों enrollments login में नहीं बदलते, WebAuthn flow कहाँ fail होता है, और कब कोई OS या browser update चुपचाप login को तोड़ देता है — और यह सब Okta, Auth0, Ping, Cognito या आपके in-house IDP को बदले बिना। दो products: Corbado Observe जोड़ता है passkeys और किसी भी अन्य login method के लिए observability। Corbado Connect देता है analytics के साथ built-in managed passkeys (आपके IDP के साथ-साथ)। VicRoads, Corbado के साथ 5M+ users के लिए passkeys चला रहा है (+80% passkey activation)। Passkey विशेषज्ञ से बात करें

अक्सर पूछे जाने वाले प्रश्न#

मैं अपने प्रोजेक्ट के लिए सही WebAuthn सर्वर लाइब्रेरी कैसे चुनूं?#

पहले जांचें कि क्या आपके विशिष्ट फ्रेमवर्क के लिए कोई लाइब्रेरी मौजूद है, फिर अपनी प्रोग्रामिंग भाषा के लिए जांचें। चूंकि सभी सूचीबद्ध लाइब्रेरी WebAuthn मानक को समान रूप से लागू करती हैं, इसलिए चुनाव में लाइब्रेरी के बीच फीचर अंतर के बजाय आपके मौजूदा स्टैक के साथ परिचितता को प्राथमिकता दी जानी चाहिए।

WebAuthn सर्वर बनाते समय मुझे अपने डेटाबेस में कौन सा डेटा स्टोर करना होगा?#

कम से कम आपको क्रेडेंशियल्स, यूज़र्स, चैलेंजेस और ऑथेंटिकेटर्स को स्टोर करना होगा। इस बात पर पूरा ध्यान दें कि आप User ID (userHandle) के रूप में कौन सा मान निर्दिष्ट करते हैं, और उन परिदृश्यों की योजना बनाएं जहां उपयोगकर्ता अपने डिवाइस से पासकी हटा सकते हैं।

मैं बिना किसी लाइब्रेरी के शुरुआत से WebAuthn सर्वर-साइड वेरिफिकेशन क्यों नहीं लागू कर सकता?#

WebAuthn सर्वर लाइब्रेरी सबसे जटिल क्रिप्टोग्राफिक ऑपरेशन्स को संभालती हैं: PublicKeyCredentialCreationOptions और PublicKeyCredentialRequestOptions पैरामीटर जेनरेट करना और साइन किए गए चैलेंजेस को वेरीफाई करना। इसे शुरुआत से सही ढंग से करना किसी ऐसे FIDO-अनुरूप लाइब्रेरी का उपयोग करने की तुलना में काफी कठिन है जिसका पहले से ही परीक्षण और ऑडिट किया जा चुका है।

किन ऑपरेटिंग सिस्टम में पासकी का सपोर्ट सबसे खराब है और WebAuthn लागू करते समय अतिरिक्त हैंडलिंग की आवश्यकता होती है?#

Windows 10 और Linux सबसे कम पासकी सपोर्ट प्रदान करते हैं, इसलिए इन प्लेटफॉर्म के उपयोगकर्ताओं के लिए समर्पित फॉलबैक समाधान की आवश्यकता होती है। प्रोडक्शन में OS-विशिष्ट समस्याओं की पहचान करने के लिए क्लाइंट-साइड WebAuthn विफलताओं और सर्वर वेरिफिकेशन अस्वीकृतियों की अलग-अलग स्ट्रीम के रूप में निगरानी करना मदद करता है।

देखें कि Corbado आपके passkey रोलआउट और मौजूदा प्रमाणीकरण स्टैक में कैसे फिट होता है।

Console देखें

यह लेख साझा करें


LinkedInTwitterFacebook