इस दस्तावेज़ में बताया गया है कि WebAuthn में userVerification
क्या है. साथ ही, पासकी बनाने या पुष्टि करने के दौरान userVerification
तय किए जाने पर, ब्राउज़र के व्यवहार के बारे में भी बताया गया है.
WebAuthn में "उपयोगकर्ता की पुष्टि" क्या है?
पासकी, सार्वजनिक पासकोड क्रिप्टोग्राफ़ी पर आधारित होती हैं. पासकी बनाने पर, सार्वजनिक और निजी पासकी का एक जोड़ा जनरेट होता है. निजी पासकी को पासकी की सुविधा देने वाली कंपनी सेव करती है. वहीं, सार्वजनिक पासकी को भरोसा करने वाली पार्टी (आरपी) के सर्वर को वापस भेज दिया जाता है, ताकि उसे सेव किया जा सके. सर्वर, उपयोगकर्ता की पुष्टि कर सकता है. इसके लिए, वह पेयर की गई सार्वजनिक कुंजी का इस्तेमाल करके, उसी पासकी से किए गए हस्ताक्षर की पुष्टि करता है. सार्वजनिक पासकी क्रेडेंशियल पर मौजूद "उपयोगकर्ता मौजूद है" (यूपी) फ़्लैग से यह साबित होता है कि पुष्टि के दौरान किसी व्यक्ति ने डिवाइस के साथ इंटरैक्ट किया था.
उपयोगकर्ता की पुष्टि करना, सुरक्षा की एक वैकल्पिक लेयर है. इससे यह पुष्टि की जाती है कि पुष्टि के दौरान सही व्यक्ति मौजूद था, न कि कोई और व्यक्ति. उपयोगकर्ता की मौजूदगी से सिर्फ़ यह पुष्टि होती है कि कोई व्यक्ति मौजूद था. स्मार्टफ़ोन पर, आम तौर पर स्क्रीन लॉक करने की सुविधा का इस्तेमाल करके ऐसा किया जाता है. यह सुविधा बायोमेट्रिक या पिन या पासवर्ड के तौर पर उपलब्ध होती है. उपयोगकर्ता की पुष्टि की गई है या नहीं, इसकी जानकारी "UV" फ़्लैग में दी जाती है. यह फ़्लैग, पासकी रजिस्टर करने और पुष्टि करने के दौरान, पुष्टि करने वाले व्यक्ति के डेटा में दिखता है


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

पासकी के रजिस्ट्रेशन और पुष्टि के दौरान, सर्वर को यह जांच करनी चाहिए कि यूपी फ़्लैग true
है या false
. साथ ही, यह भी जांच करनी चाहिए कि यूवी फ़्लैग true
है या false
. यह जांच, ज़रूरत के हिसाब से की जानी चाहिए.
userVerification
पैरामीटर की वैल्यू तय करना
WebAuthn स्पेसिफ़िकेशन के मुताबिक, आरपी, क्रेडेंशियल बनाने और पुष्टि करने, दोनों के लिए userVerification
पैरामीटर के साथ उपयोगकर्ता की पुष्टि करने का अनुरोध कर सकता है. यह 'preferred'
, 'required'
या 'discouraged'
स्वीकार करता है. इनका मतलब यह है:
'preferred'
(डिफ़ॉल्ट): डिवाइस पर उपयोगकर्ता की पुष्टि करने के तरीके का इस्तेमाल करना बेहतर होता है. हालांकि, अगर यह उपलब्ध नहीं है, तो इसे छोड़ा जा सकता है. अगर उपयोगकर्ता की पुष्टि की गई है, तो जवाब के क्रेडेंशियल में यूवी फ़्लैग की वैल्यूtrue
होती है. अगर यूवी की पुष्टि नहीं की गई है, तो वैल्यूfalse
होती है.'required'
: डिवाइस पर उपलब्ध उपयोगकर्ता की पुष्टि करने के तरीके का इस्तेमाल करना ज़रूरी है. अगर ऐसा कोई भी उपशीर्षक उपलब्ध नहीं है, तो अनुरोध पूरा नहीं किया जा सकेगा. इसका मतलब है कि रिस्पॉन्स क्रेडेंशियल हमेशाtrue
पर सेट किए गए यूवी फ़्लैग के साथ दिखता है.'discouraged'
: उपयोगकर्ता की पुष्टि करने के तरीके का इस्तेमाल न करने का सुझाव दिया जाता है. हालांकि, डिवाइस के आधार पर उपयोगकर्ता की पुष्टि की जा सकती है. साथ ही, यूवी फ़्लैग मेंtrue
याfalse
शामिल हो सकता है.
पासकी बनाने के लिए सैंपल कोड:
const publicKeyCredentialCreationOptions = {
// ...
authenticatorSelection: {
authenticatorAttachment: 'platform',
residentKey: 'required',
requireResidentKey: true,
userVerification: 'preferred'
}
};
const credential = await navigator.credentials.create({
publicKey: publicKeyCredentialCreationOptions
});
पासकी की मदद से पुष्टि करने के लिए सैंपल कोड:
const publicKeyCredentialRequestOptions = {
challenge: /* Omitted challenge data... */,
rpId: 'example.com',
userVerification: 'preferred'
};
const credential = await navigator.credentials.get({
publicKey: publicKeyCredentialRequestOptions
});
आपको userVerification
के लिए कौनसा विकल्प चुनना चाहिए?
आपको userVerification
की कौनसी वैल्यू इस्तेमाल करनी चाहिए, यह आपके ऐप्लिकेशन की ज़रूरी शर्तों के साथ-साथ, उपयोगकर्ता अनुभव की ज़रूरतों पर निर्भर करता है.
userVerification='preferred'
का इस्तेमाल कब करें
अगर आपको सुरक्षा के बजाय उपयोगकर्ता अनुभव को प्राथमिकता देनी है, तो userVerification='preferred'
का इस्तेमाल करें.
कुछ ऐसे एनवायरमेंट होते हैं जहां उपयोगकर्ता की पुष्टि करना, सुरक्षा से ज़्यादा मुश्किल होता है. उदाहरण के लिए, macOS पर Touch ID की सुविधा उपलब्ध नहीं है. ऐसा इसलिए है, क्योंकि डिवाइस पर यह सुविधा काम नहीं करती, इसे बंद कर दिया गया है या डिवाइस क्लैमशेल मोड में है. ऐसे में, उपयोगकर्ता को सिस्टम का पासवर्ड डालने के लिए कहा जाता है. इससे उपयोगकर्ता को परेशानी होती है और वह पुष्टि करने की प्रोसेस को पूरी तरह से छोड़ सकता है. अगर आपको उपयोगकर्ता अनुभव को बेहतर बनाना है, तो userVerification='preferred'
का इस्तेमाल करें.

userVerification='preferred'
के साथ, अगर उपयोगकर्ता की पुष्टि हो जाती है, तो यूवी फ़्लैग true
होता है. अगर उपयोगकर्ता की पुष्टि नहीं होती है, तो यूवी फ़्लैग false
होता है. उदाहरण के लिए, macOS पर Touch ID उपलब्ध नहीं है. इसलिए, यह उपयोगकर्ता से पुष्टि की प्रोसेस को छोड़ने के लिए, किसी बटन पर क्लिक करने के लिए कहता है. साथ ही, सार्वजनिक पासकोड क्रेडेंशियल में false
यूवी फ़्लैग शामिल होता है.
इसके बाद, यूवी फ़्लैग को जोखिम विश्लेषण में सिग्नल के तौर पर इस्तेमाल किया जा सकता है. अगर साइन इन करने की कोशिश अन्य वजहों से जोखिम भरी लगती है, तो उपयोगकर्ता को साइन इन करने के लिए पुष्टि के अतिरिक्त विकल्प दिए जा सकते हैं. ऐसा तब किया जा सकता है, जब उपयोगकर्ता की पुष्टि न की गई हो.
userVerification='required'
का इस्तेमाल कब करें
अगर आपको लगता है कि यूपी और यूवी, दोनों का इस्तेमाल करना ज़रूरी है, तो userVerification='required'
का इस्तेमाल करें.
इस विकल्प का एक नुकसान यह है कि उपयोगकर्ता को साइन इन करते समय ज़्यादा परेशानी हो सकती है. उदाहरण के लिए, macOS पर Touch ID की सुविधा उपलब्ध नहीं है. इसलिए, उपयोगकर्ता को अपने सिस्टम का पासवर्ड डालने के लिए कहा जाता है.
userVerification='required'
की मदद से, यह पक्का किया जा सकता है कि डिवाइस पर उपयोगकर्ता की पुष्टि की गई हो. पक्का करें कि सर्वर यह पुष्टि करे कि यूवी फ़्लैग true
है.
नतीजा
उपयोगकर्ता की पुष्टि करने की सुविधा की मदद से, पासकी पर भरोसा करने वाली पार्टियां यह अनुमान लगा सकती हैं कि डिवाइस का मालिक साइन इन कर सकता है या नहीं. यह उनकी पसंद पर निर्भर करता है कि वे उपयोगकर्ता की पुष्टि करना ज़रूरी बनाएं या इसे वैकल्पिक रखें. यह इस बात पर निर्भर करता है कि फ़ॉलबैक साइन-इन मैकेनिज़्म, उपयोगकर्ता फ़्लो पर कितना असर डालता है. पक्का करें कि सर्वर, पासकी का इस्तेमाल करके उपयोगकर्ता की पुष्टि करने के लिए, UP फ़्लैग और UV फ़्लैग की जांच करता हो.