पासकी के बारे में जानकारी

वेब की सुविधाएं: वेब पर पुष्टि करना

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

1. पासकी इस्तेमाल करने के लिए ज़रूरी शर्तें

पासकी, वेब ऑथेंटिकेशन एपीआई (WebAuthn) पर निर्भर करती हैं. यह एपीआई, सुरक्षा से जुड़ी सख्त पाबंदियां लगाता है. पासकी को लागू करने से पहले, इन पाबंदियों को पूरा करना ज़रूरी है:

  • सुरक्षित कॉन्टेक्स्ट: WebAuthn के तरीके (navigator.credentials.create और navigator.credentials.get), सुरक्षित कॉन्टेक्स्ट के पीछे पूरी तरह से छिपे होते हैं. ऐप्लिकेशन, प्रोडक्शन में https:// पर या लोकल डेवलपमेंट के लिए http://localhost पर चलने चाहिए.
  • रिलाइंग पार्टी (आरपी) आईडी: हर क्रेडेंशियल, आरपी आईडी से जुड़ा होता है. यह आईडी, ऐप्लिकेशन का डोमेन नेम होता है. सर्वर-साइड के विकल्पों में पास किया गया आरपी आईडी, मौजूदा ऑरिजिन के डोमेन नेम से मैच होना चाहिए या उसका मान्य सफ़िक्स होना चाहिए. उदाहरण के लिए, example.com, login.example.com के लिए मान्य है. मैच न होने पर, क्लाइंट साइड पर SecurityError अपवाद दिखते हैं.

2. AAGUID यूएक्स से जुड़ी चेतावनी

ऑथेंटिकेटर अटेस्टेशन ग्लोबली यूनीक आइडेंटिफ़ायर (एएजीयूआईडी), 128-बिट का आइडेंटिफ़ायर होता है. यह रजिस्ट्रेशन अटेस्टेशन डेटा में दिखता है. यह ऑथेंटिकेटर के मॉडल/सेवा देने वाली कंपनी को दिखाता है. जैसे, Google Password Manager, iCloud Keychain, 1Password.

  • सिर्फ़ UX हिंट के लिए: भरोसा करने वाली इकाइयों को AAGUID का इस्तेमाल सिर्फ़ UX हिंट के लिए करना चाहिए. जैसे, उपयोगकर्ता की मदद के लिए, मैनेजमेंट लिस्ट में पासकी की सेवा देने वाली कंपनी का नाम और आइकॉन रेंडर करना.
  • सुरक्षा से जुड़ी कोई डिपेंडेंसी नहीं: ऐप्लिकेशन को क्रिप्टोग्राफ़िक सुरक्षा या ऐक्सेस से जुड़े फ़ैसलों के लिए, एएजीयूआईडी का इस्तेमाल नहीं करना चाहिए. फ़िलहाल, प्लैटफ़ॉर्म पासकी अपने एएजीयूआईडी के लिए क्रिप्टोग्राफ़िक अटेस्टेशन नहीं देती हैं. इसका मतलब है कि उपयोगकर्ता एजेंट, इनमें बदलाव कर सकते हैं या इन्हें सिम्युलेट कर सकते हैं.

3. लाइब्रेरी के सुझावों को अलग करना

बैकएंड FIDO2/WebAuthn के विकल्पों को जनरेट करने और हस्ताक्षर की पुष्टि करने के लिए, डेवलपर को हर भाषा के लिए, जांच की गई ओपन सोर्स लाइब्रेरी पर भरोसा करना चाहिए. उन्हें क्रिप्टोग्राफ़ी को खुद से रोल नहीं करना चाहिए:

  • JavaScript/TypeScript: SimpleWebAuthn (github.com/MasterKale/SimpleWebAuthn)
  • Python: py_webauthn (github.com/duo-labs/py_webauthn)
  • Java: Java WebAuthn Server (github.com/Yubico/java-webauthn-server), WebAuthn4J (github.com/webauthn4j/webauthn4j)
  • .NET: FIDO2 के लिए .NET लाइब्रेरी (github.com/abergs/fido2-net-lib)
  • Go: WebAuthn Go Library (github.com/go-webauthn/webauthn)
  • Ruby: WebAuthn Ruby (github.com/cedarcode/webauthn-ruby)
  • PHP: WebAuthn Framework (github.com/web-auth/webauthn-framework)

4. इस्तेमाल के उदाहरणों का रेफ़रंस मैट्रिक्स

नीचे दिए गए विकल्पों में से, अपने इस्तेमाल का उदाहरण चुनें और उसे लागू करने के बारे में पूरी जानकारी पाएं. इस्तेमाल के हर उदाहरण में ज़रूरी एपीआई (PublicKeyCredential.parseCreationOptionsFromJSON, parseRequestOptionsFromJSON, signalAllAcceptedCredentials, signalCurrentUserDetails, signalUnknownCredential, कंडिशनल मीडिएशन, एएजीयूआईडी हैंडलिंग वगैरह) होते हैं. इन्हें सिर्फ़ इस्तेमाल के उदाहरण वाली गाइड में शामिल किया जाता है. पासकी को वापस पाने के इस चरण को न छोड़ें. साथ ही, क्लाइंट पर तीसरे पक्ष की लाइब्रेरी रैपर (जैसे, SimpleWebAuthn के startAuthentication/startRegistration) का इस्तेमाल न करें. इसके बजाय, नेटिव WebAuthn ब्राउज़र एपीआई को सीधे कॉल करें. सेक्शन 3 में लाइब्रेरी के लिए दिए गए सुझाव, सिर्फ़ सर्वर-साइड (बैकएंड FIDO2 पुष्टि) पर लागू होते हैं.

पासकी और WebAuthn को लागू करने के बारे में ज़्यादा जानकारी, इन गाइड में दी गई है: