यह लेख नेटिव ऐप्स (iOS + Android) में पासकीज़ को लागू करने का तरीका बताता है। आप जानेंगे कि पासकी प्रमाणीकरण के लिए किस प्रकार के वेबव्यू की सिफारिश की जाती है।

Vincent
Created: June 20, 2025
Updated: November 13, 2025

Passkeys Series: Native Apps
See the original blog version in English here.
60-page Enterprise Passkey Whitepaper:
Learn how leaders get +80% passkey adoption. Trusted by Rakuten, Klarna & Oracle
| दृष्टिकोण | अपनाने की दर | पासकी बनाएं | पासकी का उपयोग करें | पासकी प्रबंधित करें | तकनीकी जटिलता | OAuth समर्थन |
|---|---|---|---|---|---|---|
| नेटिव कार्यान्वयन | 🟢🟢🟢 | उच्च अपनाने की दर, सर्वश्रेष्ठ UX, सहज बायोमेट्रिक | तुरंत, साइलेंट प्रमाणीकरण | पूर्ण नेटिव नियंत्रण | मध्यम-उच्च | अलग प्रवाह की आवश्यकता |
| सिस्टम वेबव्यू | 🟢🟢 | अच्छी अपनाने की दर, ब्राउज़र जैसा अनुभव | मानक ब्राउज़र UX, साझा कीचेन | ब्राउज़र-आधारित प्रबंधन | निम्न | उत्कृष्ट |
| एम्बेडेड वेबव्यू | 🟢 | कम अपनाने की दर, अधिक सेटअप की आवश्यकता | नेटिव समर्थन iOS और Android (WebKit 1.12.1+), कोई कंडीशनल UI नहीं | सीमित नियंत्रण | मध्यम-उच्च | लागू नहीं |
ध्यान दें: सिस्टम और एम्बेडेड वेबव्यू को अक्सर मिलाया जाता है, जहां सिस्टम वेबव्यू लॉगिन को संभालता है (स्वचालित क्रेडेंशियल शेयरिंग के साथ), फिर एम्बेडेड वेबव्यू सेटिंग्स में पासकी प्रबंधन को रेंडर करता है।
मुख्य निर्णय कारक:
आधुनिक मोबाइल प्लेटफ़ॉर्म आपके नेटिव ऐप में पासकी को एकीकृत करने के लिए तीन अलग-अलग दृष्टिकोण प्रदान करते हैं, जिनमें से प्रत्येक उपयोगकर्ता अनुभव, तकनीकी जटिलता और OAuth संगतता के लिए अलग-अलग फायदे और नुकसान के साथ आता है:
नेटिव कार्यान्वयन: प्लेटफ़ॉर्म API (iOS AuthenticationServices, Android Credential Manager) का उपयोग करके सीधे अपने ऐप में पासकी प्रवाह बनाएं। यह सहज बायोमेट्रिक प्रमाणीकरण के साथ सर्वश्रेष्ठ उपयोगकर्ता अनुभव प्रदान करता है, लेकिन इसके लिए मध्यम से उच्च तकनीकी कार्यान्वयन प्रयास की आवश्यकता होती है।
सिस्टम वेबव्यू: प्रमाणीकरण को संभालने के लिए प्लेटफ़ॉर्म के ब्राउज़र घटक (iOS ASWebAuthenticationSession / SFSafariViewController, Android Chrome Custom Tabs) का उपयोग करें। यह OAuth-आधारित लॉगिन प्रवाह के लिए उत्कृष्ट है और सिस्टम ब्राउज़र के साथ क्रेडेंशियल साझा करता है।
एम्बेडेड वेबव्यू: नेटिव ऐप स्केलेटन के साथ वेब प्रमाणीकरण का पुन: उपयोग करने के लिए अपने ऐप के भीतर एक अनुकूलन योग्य वेब व्यू (iOS WKWebView, Android WebView) एम्बेड करें। यह URL बार के बिना एक नेटिव जैसा स्वरूप प्रदान करता है और वेब व्यू UI पर पूर्ण नियंत्रण देता है। इसके लिए अतिरिक्त सेटअप की आवश्यकता होती है जिसमें अनुमतियाँ और एंटाइटलमेंट (iOS), और पासकी कार्यक्षमता को सक्षम करने के लिए AndroidX WebKit 1.12.1+ (Android) के साथ वेबव्यू कॉन्फ़िगरेशन शामिल है।
सही चुनाव आपके ऐप की प्रमाणीकरण वास्तुकला, क्या आप OAuth प्रदाताओं का उपयोग करते हैं, UI पर आपको कितना नियंत्रण चाहिए, और क्या आप नेटिव-फर्स्ट बना रहे हैं या वेब घटकों का पुन: उपयोग कर रहे हैं, इस पर निर्भर करता है।
एक नेटिव पासकी कार्यान्वयन इष्टतम उपयोगकर्ता अनुभव प्रदान करता है, जिसमें प्रमाणीकरण प्रवाह सीधे आपके ऐप के UI में प्लेटफ़ॉर्म-विशिष्ट API का उपयोग करके बनाया गया है। उपयोगकर्ताओं को प्लेटफ़ॉर्म-नेटिव संवाद, सहज बायोमेट्रिक सत्यापन और सबसे तेज़ संभव लॉगिन समय से लाभ होता है।
नेटिव कार्यान्वयन कब चुनें:
preferImmediatelyAvailableCredentials का उपयोग कर सकते हैं ताकि पासकी उपलब्ध होने पर
स्वचालित रूप से पासकी ओवरले प्रदर्शित हो सके, जो पहचानकर्ता प्रविष्टि की आवश्यकता के
बिना सबसे तेज़ लॉगिन अनुभव प्रदान करता है।मुख्य लाभ: preferImmediatelyAvailableCredentials()
नेटिव कार्यान्वयन preferImmediatelyAvailableCredentials() का लाभ उठाकर एक स्वचालित पासकी
ओवरले बना सकते हैं जो पासकी उपलब्ध होने पर ऐप शुरू होते ही तुरंत दिखाई देता है। यह
उपयोगकर्ता नाम रहित प्रवाह सबसे तेज़ संभव लॉगिन अनुभव प्रदान करता है - उपयोगकर्ता पहले
पहचानकर्ता दर्ज किए बिना तुरंत अपनी पासकी देखते हैं। यह क्षमता विशेष रूप से नेटिव
कार्यान्वयन के लिए है और वेबव्यू वेरिएंट में उपलब्ध नहीं है।
जबकि वेबव्यू कार्यान्वयन कंडीशनल UI (इनपुट फ़ील्ड में पासकी सुझाव) का उपयोग कर सकते हैं, नेटिव का स्वचालित ओवरले उच्च पासकी उपयोग दरों के साथ बेहतर UX प्रदान करता है क्योंकि प्रमाणीकरण ऐप लॉन्च होते ही तुरंत शुरू हो जाता है।
तकनीकी आवश्यकताओं का अवलोकन:
नेटिव पासकी एकीकरण के लिए आपके ऐप और वेब डोमेन के बीच क्रिप्टोग्राफ़िक विश्वास की आवश्यकता होती है। इसके बिना, OS सभी WebAuthn परिचालनों को अस्वीकार कर देगा। मुख्य आवश्यकताएं:
/.well-known/ पर होस्ट की गईंप्रमुख लाभ: आपकी वेबसाइट पर बनाई गई पासकी आपके ऐप में और इसके विपरीत सहजता से काम करती हैं।
आईओएस पर नेटिव रूप से पासकी लागू करने में Apple का AuthenticationServices फ्रेमवर्क शामिल है, जो WebAuthn संचालन के लिए एक API प्रदान करता है:
मुख्य घटक:
ASAuthorizationController: प्रमाणीकरण प्रवाह का प्रबंधन करता हैASAuthorizationPlatformPublicKeyCredentialProvider: पासकी अनुरोध बनाता हैविकास युक्तियाँ
?mode=developer जोड़ें।Android का नेटिव पासकी कार्यान्वयन Credential Manager API (या पिछड़े संगतता के लिए पुराने FIDO2 API) का उपयोग करता है:
मुख्य घटक:
CredentialManager: सभी क्रेडेंशियल संचालन के लिए केंद्रीय APICreatePublicKeyCredentialRequest: पासकी पंजीकरण के लिएGetCredentialRequest: पासकी प्रमाणीकरण के लिएध्यान दें: Android में वर्तमान में नेटिव ऐप्स में iOS के कंडीशनल UI कीबोर्ड सुझावों का अभाव है (हालांकि कंडीशनल UI वेब ऐप्स में काम करता है)।
नेटिव रूप से पासकी लागू करने में महत्वपूर्ण चुनौतियाँ और सीखे गए सबक हैं: OS स्तर पर एकीकरण विभिन्न उपकरणों और OS संस्करणों में समस्याएँ पैदा कर सकता है।
जबकि आप कच्चे प्लेटफ़ॉर्म API का उपयोग करके पासकी लागू कर सकते हैं, विशेष रूप से निर्मित SDK WebAuthn जटिलता, किनारे के मामलों को संभालकर और अंतर्निहित टेलीमेट्री प्रदान करके विकास को काफी तेज करते हैं। SDK यूनिट परीक्षण के लिए मॉकेबल इंटरफेस भी प्रदान करते हैं (महत्वपूर्ण क्योंकि आप सिमुलेटर में बायोमेट्रिक्स का परीक्षण नहीं कर सकते हैं)।
सिफारिश: नेटिव कार्यान्वयन के लिए, हम कॉर्बाडो SDK (iOS Swift Passkey SDK, Android Kotlin Passkey SDK) का उपयोग करने की सलाह देते हैं, जो उत्पादन परिनियोजन के माध्यम से खोजे गए कई किनारे के मामलों को संभालते हैं, अतिरिक्त टेलीमेट्री और परीक्षण प्रदान करते हैं।
Igor Gjorgjioski
Head of Digital Channels & Platform Enablement, VicRoads
Corbado proved to be a trusted partner. Their hands-on, 24/7 support and on-site assistance enabled a seamless integration into VicRoads' complex systems, offering passkeys to 5 million users.
Passkeys that millions adopt, fast. Start with Corbado's Adoption Platform.
Start Free Trialसिस्टम वेबव्यू आपके ऐप के भीतर प्रमाणीकरण को संभालने के लिए प्लेटफ़ॉर्म के नेटिव ब्राउज़र घटक का उपयोग करते हैं। पूरी तरह से नेटिव कार्यान्वयन के विपरीत, सिस्टम वेबव्यू वास्तविक सिस्टम ब्राउज़र (iOS पर सफारी, Android पर क्रोम) का उपयोग करके वेब सामग्री प्रदर्शित करते हैं, साझा कुकीज़, सहेजे गए क्रेडेंशियल और परिचित ब्राउज़र सुरक्षा संकेतकों को बनाए रखते हैं।
सिस्टम वेबव्यू कब चुनें:
मुख्य लाभ:
प्लेटफ़ॉर्म घटक:
ASWebAuthenticationSession (प्रमाणीकरण प्रवाह के लिए अनुशंसित) या
SFSafariViewController (सामान्य ब्राउज़िंग)Google और GitHub जैसी प्रमुख कंपनियों ने मौजूदा वेब प्रमाणीकरण पृष्ठों पर वेबव्यू ओवरले के माध्यम से अपने मोबाइल ऐप्स में पासकी लॉगिन जोड़ने के लिए इस दृष्टिकोण को अपनाया है। यह तब अच्छा काम करता है जब पूरी तरह से नेटिव प्रमाणीकरण पुनर्निर्माण तुरंत संभव नहीं होता है।
iOS प्रमाणीकरण के लिए दो प्राथमिक सिस्टम वेबव्यू घटक प्रदान करता है:
ASWebAuthenticationSession (प्रमाणीकरण के लिए अनुशंसित):
SFSafariViewController (सामान्य ब्राउज़िंग):
| फ़ीचर | ASWebAuthenticationSession | SFSafariViewController |
|---|---|---|
| प्राथमिक उपयोग मामला | प्रमाणीकरण प्रवाह | सामान्य वेब ब्राउज़िंग |
| OAuth/OIDC | उत्कृष्ट | अच्छा |
| पासकी समर्थन | हाँ | हाँ |
| अनुकूलन | सीमित | न्यूनतम |
यदि आपका ऐप OAuth-आधारित लॉगिन का उपयोग करता है, तो ASWebAuthenticationSession
अनुशंसित विकल्प है क्योंकि यह विशेष रूप से प्रमाणीकरण परिदृश्यों के लिए डिज़ाइन किया गया
है और सुरक्षा और उपयोगकर्ता अनुभव का सबसे अच्छा संतुलन प्रदान करता है।
Chrome Custom Tabs (CCT) आपके ऐप के भीतर एक क्रोम-संचालित प्रमाणीकरण अनुभव प्रदान करते हैं:
मुख्य विशेषताएं:
OAuth एकीकरण: Chrome Custom Tabs iOS ASWebAuthenticationSession के Android समकक्ष हैं, जो संग्रहीत पासकी तक पहुंच बनाए रखते हुए उत्कृष्ट OAuth समर्थन प्रदान करते हैं।
एम्बेडेड वेबव्यू आपके ऐप के भीतर वेब सामग्री रेंडरिंग पर पूर्ण नियंत्रण प्रदान करते हैं, जिससे कुकीज़, सत्र और नेविगेशन का सीधा हेरफेर बिना URL बार के संभव होता है। हालांकि, इस नियंत्रण के साथ पासकी कार्यक्षमता को सक्षम करने के लिए अतिरिक्त तकनीकी आवश्यकताओं की आवश्यकता होती है।
एम्बेडेड वेबव्यू कब चुनें:
महत्वपूर्ण संदर्भ:
कई ऐप्स एक हाइब्रिड दृष्टिकोण का उपयोग करते हैं: सिस्टम वेबव्यू प्रारंभिक OAuth प्रमाणीकरण को संभालता है (जहां पासकी सहजता से काम करती हैं), फिर सेटिंग्स में पासकी का प्रबंधन करने के लिए पोस्ट-प्रमाणीकरण के लिए एम्बेडेड वेबव्यू पर स्विच करते हैं। चुनौतियां तब उत्पन्न होती हैं जब सीधे एम्बेडेड वेबव्यू के भीतर पासकी का उपयोग करने का प्रयास किया जाता है।
तकनीकी आवश्यकताएं:
एम्बेडेड वेबव्यू को सिस्टम वेबव्यू की तुलना में अतिरिक्त सेटअप की आवश्यकता होती है:
प्लेटफ़ॉर्म घटक:
WKWebViewandroid.webkit.WebViewफायदे और नुकसान:
वेबव्यू के माध्यम से पासकी लागू करते समय, सिस्टम वेबव्यू और एम्बेडेड वेबव्यू के बीच के अंतर को समझना महत्वपूर्ण है। ऊपर उल्लिखित तीन दृष्टिकोण (नेटिव कार्यान्वयन, सिस्टम वेबव्यू, और एम्बेडेड वेबव्यू) प्रत्येक अलग-अलग उपयोग मामलों की सेवा करते हैं।
iOS पर, आपके पास इन-ऐप वेब सामग्री प्रदर्शित करने के लिए कई विकल्प हैं:
Android पर, मुख्य विकल्प हैं:
android.webkit.WebView) है, जो अनिवार्य रूप से
एक मिनी ब्राउज़र है जिसे आपकी गतिविधियों में एम्बेड किया जा सकता है। यह अत्यधिक अनुकूलन
योग्य है लेकिन आपके ऐप की प्रक्रिया में चलता है।निम्नलिखित अनुभागों में, हम iOS और Android के लिए इन वेबव्यू प्रकारों में थोड़ा और गहराई से उतरेंगे, और चर्चा करेंगे कि पासकी प्रमाणीकरण प्रवाह के लिए कौन सा सबसे उपयुक्त हो सकता है।
Apple का प्लेटफ़ॉर्म ऊपर सूचीबद्ध तीन वेबव्यू विकल्प प्रदान करता है। आपकी पसंद यह प्रभावित करेगी कि ऐप के अंदर पासकी का कितनी सहजता से उपयोग किया जा सकता है:
iOS में विभिन्न वेबव्यू व्यवहार का परीक्षण करने के लिए, हम ऐप WebView - WKWebView and UIWebView rendering की सलाह देते हैं।
WKWebView iOS के लिए एक बहुमुखी वेबव्यू घटक है। डेवलपर्स UI और व्यवहार पर उच्च स्तर के नियंत्रण के साथ वेब सामग्री को प्रस्तुत करने के लिए एक WKWebView एम्बेड कर सकते हैं। WKWebView सफारी के समान रेंडरिंग इंजन का उपयोग करता है, इसलिए यह बहुत प्रदर्शनकारी है और आधुनिक वेब सुविधाओं का समर्थन करता है। सिद्धांत रूप में, WKWebView WebAuthn (और इस प्रकार पासकी) को सही ढंग से कॉन्फ़िगर किए जाने पर संभाल सकता है, लेकिन ध्यान दें कि सुरक्षा के लिए कुछ उन्नत ब्राउज़र सुविधाएँ प्रतिबंधित हो सकती हैं। एक बात का ध्यान रखना चाहिए कि WKWebView डिफ़ॉल्ट रूप से मोबाइल सफारी के साथ कुकीज़ या कीचेन डेटा साझा नहीं करता है। उपयोगकर्ताओं को नए सिरे से लॉगिन करना पड़ सकता है क्योंकि उनका वेबव्यू सत्र सफारी के सत्र से अलग है। इसके अलावा, क्योंकि WKWebView सामग्री को ऐप द्वारा पूरी तरह से अनुकूलित किया जा सकता है, उपयोगकर्ता को एड्रेस बार या सफारी UI नहीं दिखता है - जो ब्रांडिंग के लिए बहुत अच्छा है, लेकिन इसका मतलब है कि उपयोगकर्ता के पास पृष्ठ की वैधता को सत्यापित करने के लिए कम संकेत हैं (एंटी-फ़िशिंग के लिए एक चिंता)। कुछ ऐप्स ने स्क्रिप्ट इंजेक्ट करने या सामग्री को बदलने के लिए WKWebView का दुरुपयोग भी किया है (उदाहरण के लिए TikTok को अपने इन-ऐप ब्राउज़र के माध्यम से ट्रैकिंग JS इंजेक्ट करने के लिए नोट किया गया था), इसलिए WKWebView को सुरक्षित, उपयोगकर्ता-भरोसेमंद तरीके से उपयोग करने में सावधानी बरतनी चाहिए।
SFSafariViewController एक इन-ऐप सफारी अनुभव प्रदान करता है। जब आप SFSafariViewController के साथ एक URL खोलते हैं, तो यह लगभग वास्तविक सफारी ब्राउज़र में खोलने जैसा होता है, सिवाय इसके कि उपयोगकर्ता आपके ऐप के UI के भीतर रहता है। पासकी के लिए इसका लाभ महत्वपूर्ण है: क्योंकि यह अनिवार्य रूप से सफारी है, उपयोगकर्ता का iCloud Keychain और सहेजे गए पासकी सुलभ हैं। ध्यान दें कि iOS 11+ पर कुकीज़ साझा नहीं की जाती हैं। इसका मतलब है कि यदि उपयोगकर्ता के पास आपकी साइट के लिए पहले से ही एक पासकी है, तो सफारी इसे ढूंढ सकता है और आसान लॉगिन के लिए कंडीशनल UI ऑटोकंप्लीट भी प्रदर्शित कर सकता है। SFSafariViewController कम अनुकूलन योग्य है (आप इसके टूलबार को ज्यादा नहीं बदल सकते हैं), लेकिन यह स्वचालित रूप से बहुत सारी सुरक्षा और गोपनीयता सुविधाओं को संभालता है। URL बार दिखाया गया है, HTTPS के लिए पैडलॉक आइकन के साथ पूरा, जो उपयोगकर्ताओं को विश्वास दिलाता है कि वे सही डोमेन पर हैं। सामान्य तौर पर, SFSafariViewController को एक कच्चे WKWebView की तुलना में अधिक सुरक्षित माना जाता है और इसे लागू करना सरल है (Apple इसे ड्रॉप-इन के रूप में प्रदान करता है)। मुख्य ट्रेड-ऑफ यह है कि आप लुक और फील पर कुछ नियंत्रण का त्याग करते हैं। एक प्रमाणीकरण प्रवाह के लिए, यह आमतौर पर स्वीकार्य है। यहां प्राथमिकता सुरक्षा और लॉगिन में आसानी है, जिसमें SFSafariViewController सफारी के संदर्भ का उपयोग करके उत्कृष्टता प्राप्त करता है।
| WKWebView | SFSafariViewController | |
|---|---|---|
| उपयोगकर्ता अनुभव | - नेटिव अहसास: उपयोगकर्ताओं को लग सकता है कि वेब सामग्री ऐप का एक नेटिव हिस्सा है क्योंकि डेवलपर्स ऐप के डिज़ाइन से मेल खाने के लिए लुक और फील को अनुकूलित कर सकते हैं। - ऑटोफिल: सफारी से डेटा के साथ ऑटोफिल संभव है | - सहज: उपयोगकर्ता की सफारी सेटिंग्स का उपयोग करके सहज उपयोगकर्ता अनुभव जो नेटिव ऐप और ब्राउज़र के बीच लगातार वेब ब्राउज़िंग सुनिश्चित करता है। |
| डेवलपर अनुभव | - अत्यधिक अनुकूलन योग्य: व्यापक अनुकूलन और कॉन्फ़िगरेशन उपलब्ध - लचीला: वेब सामग्री के साथ बातचीत करने के लिए कई API | - मध्यम अनुकूलन योग्य: सीमित अनुकूलन विकल्प, विशेष रूप से WKWebView की तुलना में, - सरल: WKWebView की तुलना में लागू करना सरल |
| प्रदर्शन | - अपेक्षाकृत धीमा: कार्यान्वयन और वेब सामग्री के आधार पर, लोडिंग गति को अनुकूलित किया जा सकता है, लेकिन कस्टम सुविधाओं और इंटरैक्शन के अतिरिक्त प्रसंस्करण के कारण SFSafariViewController की तुलना में अभी भी धीमा हो सकता है। | - अपेक्षाकृत तेज़: आमतौर पर बेहतर प्रदर्शन प्रदान करता है क्योंकि यह सफारी इंजन का लाभ उठाता है, जो गति और दक्षता के लिए अनुकूलित है, वेब पेजों के लिए तेज़ लोडिंग समय प्रदान करता है। |
| विश्वास और पहचान | - URL प्रदर्शन आवश्यक नहीं: WKWebView अक्सर URL नहीं दिखाता है, जिससे उपयोगकर्ताओं के लिए वेबपेज को सत्यापित करना कठिन हो जाता है। दुर्भावनापूर्ण ऐप्स के लिए इस व्यवहार की नकल करने और क्रेडेंशियल फ़िश करने की क्षमता। | - ब्राउज़र-जैसा अनुभव: सफारी का उपयोग करके वेब पेज प्रस्तुत करता है, एक "ब्राउज़र-जैसा" अनुभव प्रदान करता है। उपयोगकर्ता URL देख सकते हैं और सफारी की ऑटो-फिल सुविधाओं तक पहुंच सकते हैं, संभावित रूप से परिचित इंटरफ़ेस के कारण अधिक विश्वास पैदा करते हैं। |
| अलगाव | - पृथक: कुकीज़ और सत्र सफारी से अलग होते हैं; उपयोगकर्ता स्वचालित रूप से WKWebView में लॉग इन नहीं होंगे। | - पृथक: कुकीज़ और सत्र सफारी से अलग होते हैं; उपयोगकर्ता स्वचालित रूप से SFSafariViewController में भी लॉग इन नहीं होंगे। |
| कमजोरियाँ | - सुरक्षित: Apple के ऐप सैंडबॉक्सिंग के कारण स्वाभाविक रूप से सुरक्षित, लेकिन व्यवहार और सुरक्षा ऐप के कार्यान्वयन पर निर्भर करती है। यदि सही ढंग से लागू नहीं किया गया तो संभावित कमजोरियाँ। | - अधिक सुरक्षित: सफारी की अंतर्निहित सुरक्षा सुविधाओं से लाभ, जिसमें एंटी-फ़िशिंग और दुर्भावनापूर्ण वेबसाइट चेतावनियाँ शामिल हैं। इन सुविधाओं और सफारी के साथ उपयोगकर्ता की परिचितता के कारण वेब सामग्री प्रदर्शित करने के लिए आम तौर पर WKWebView की तुलना में अधिक सुरक्षित माना जाता है। |
| अन्य | - सुविधाएँ उपलब्ध नहीं: कुछ ब्राउज़र सुविधाएँ (जैसे, WebAuthn) सुरक्षा चिंताओं और एप्लिकेशन संदर्भ में चल रहे WKWebView के कारण पूरी तरह से सुलभ नहीं हो सकती हैं। - जावास्क्रिप्ट इंजेक्शन: कुछ ऐप्स, उदा. टिकटॉक अपने इन-ऐप WKWebView में ट्रैकिंग जावास्क्रिप्ट इंजेक्ट करते हैं, या उपयोगकर्ता नियंत्रक को प्रतिबंधित करते हैं (उदा. फेसबुक) - गोपनीयता के मुद्दे: गोपनीयता के संबंध में अधिक सामुदायिक प्रतिक्रिया | - कोई जावास्क्रिप्ट इंजेक्शन नहीं: ऐप से जावास्क्रिप्ट के निष्पादन की अनुमति नहीं देता है, जिससे सुरक्षा और गोपनीयता बढ़ती है। यह जावास्क्रिप्ट अलर्ट या पुष्टिकरण का भी समर्थन नहीं करता है, जो कुछ वेब पेजों पर उपयोगकर्ता अनुभव को संभावित रूप से प्रभावित कर सकता है। - रीडर मोड: लेखों के स्वच्छ, आसानी से पढ़े जाने वाले संस्करण के लिए एक रीडर मोड प्रदान करता है। |
SFAuthenticationSession / ASWebAuthenticationSession – ये कक्षाएं (बाद वाला नया स्विफ्ट-अनुकूल नाम है) विशेष रूप से OAuth या OpenID कनेक्ट जैसे लॉगिन प्रवाह के लिए बनाई गई हैं। जब आपको किसी वेब पेज के माध्यम से किसी उपयोगकर्ता को प्रमाणित करने की आवश्यकता होती है (शायद किसी बाहरी IdP के लिए), तो ये सत्र iOS पर अनुशंसित विकल्प हैं। वे SFSafariViewController के समान हैं क्योंकि वे सफारी ब्राउज़र का उपयोग करते हैं और सफारी के साथ कुकीज़/स्टोरेज साझा करते हैं। मुख्य अंतर यह है कि SFAuthenticationSession हमेशा उपयोगकर्ता को संकेत देगा कि ऐप वेबपेज का उपयोग करके प्रमाणित करना चाहता है (उपयोगकर्ता जागरूकता के लिए) और यह उपलब्ध होने पर स्वचालित रूप से उपयोगकर्ता के मौजूदा सफारी सत्र का उपयोग करेगा।
इसका लाभ एक सहज SSO अनुभव है - यदि उपयोगकर्ता पहले से ही सफारी में प्रदाता में लॉग इन है, तो यह सत्र दूसरे लॉगिन से बचने के लिए उस कुकी का उपयोग कर सकता है। पासकी के लिए, यह महत्वपूर्ण है क्योंकि इसका मतलब है कि सफारी/iCloud कीचेन में संग्रहीत कोई भी पासकी क्रेडेंशियल यहां भी उपयोग किया जा सकता है। Apple का आधिकारिक मार्गदर्शन यह है कि लॉगिन प्रवाह जैसा दिखने वाली किसी भी चीज़ के लिए ASWebAuthenticationSession का उपयोग करें। इसके फायदे बढ़ी हुई गोपनीयता (आपका ऐप कभी भी क्रेडेंशियल या कुकीज़ नहीं देखता, सफारी इसे संभालता है) और अंतर्निहित SSO समर्थन हैं। इसका नुकसान यह है कि यह प्रमाणीकरण प्रवाह तक सीमित है (आप इसे अपने ऐप में केवल मनमाना वेब सामग्री प्रस्तुत करने के लिए उपयोग नहीं करेंगे)। सारांश में, यदि आप iOS पर एक वेबव्यू दृष्टिकोण चुनते हैं, तो ASWebAuthenticationSession आमतौर पर पासकी लागू करने के लिए सबसे अच्छा विकल्प है क्योंकि यह सुरक्षित है, सफारी के साथ स्थिति साझा करता है और प्रमाणीकरण के लिए विशेष रूप से बनाया गया है।
Android पर, वेबव्यू निर्णय क्लासिक वेबव्यू और क्रोम कस्टम टैब के बीच है:
Android में विभिन्न वेबव्यू व्यवहार का परीक्षण करने के लिए, हम ऐप WebView vs Chrome Custom Tabs की सलाह देते हैं।
Android वेबव्यू (android.webkit.WebView) एक घटक है जो आपको अपनी गतिविधि लेआउट में वेब पेजों को एम्बेड करने देता है। यह WKWebView के समान है क्योंकि यह आपको पूर्ण नियंत्रण देता है: आप नेविगेशन को रोक सकते हैं, जावास्क्रिप्ट इंजेक्ट कर सकते हैं, UI को अनुकूलित कर सकते हैं, आदि। यह आपके ऐप की प्रक्रिया के भीतर भी चलता है। पासकी के लिए वेबव्यू का उपयोग करने का मतलब है कि आपका ऐप आपका वेब लॉगिन पेज लोड करता है, और वह पेज एक WebAuthn पासकी समारोह शुरू कर सकता है। आधुनिक एंड्रॉइड वेबव्यू WebAuthn का समर्थन करता है (बशर्ते डिवाइस का वेबव्यू कार्यान्वयन एंड्रॉइड सिस्टम वेबव्यू या क्रोम घटक के माध्यम से अद्यतित हो)। एक प्रमुख विचार: डिफ़ॉल्ट रूप से, एक एंड्रॉइड वेबव्यू उपयोगकर्ता के क्रोम ब्राउज़र के साथ कुकीज़ या संग्रहीत क्रेडेंशियल साझा नहीं करता है। इसलिए वेबव्यू में बनाया या उपयोग किया गया कोई भी पासकी क्रोम को ज्ञात नहीं हो सकता है, और इसके विपरीत। यह अलगाव सुरक्षा के लिए अच्छा हो सकता है (आपका ऐप ब्राउज़र कुकीज़ नहीं पढ़ सकता है), लेकिन यह उपयोगकर्ताओं को फिर से लॉग इन करने के लिए मजबूर कर सकता है यदि उन्होंने पहले ही क्रोम में प्रमाणित कर लिया है। एक और मुद्दा विश्वास का है। एक सादा वेबव्यू URL या SSL लॉक आइकन नहीं दिखाता है, इसलिए उपयोगकर्ताओं को आपको फ़िश न करने के लिए आपके ऐप पर पूरी तरह से भरोसा करना होगा। Google ने संभावित फ़िशिंग जोखिमों के कारण Google OAuth साइन-इन के लिए वेबव्यू के उपयोग पर भी प्रतिबंध लगा दिया है। प्रदर्शन-वार, वेबव्यू ठीक हैं, लेकिन वे उपयोगकर्ता के डिफ़ॉल्ट ब्राउज़र का उपयोग करने की तुलना में धीमे या अधिक मेमोरी-गहन हो सकते हैं, खासकर यदि भारी पृष्ठ लोड हो रहे हों।
क्रोम कस्टम टैब (CCT) एक हाइब्रिड दृष्टिकोण है। वे आपके ऐप को एक क्रोम-रेंडर किया हुआ पेज खोलने की अनुमति देते हैं जो ऐसा लगता है जैसे यह आपके ऐप का हिस्सा है। आप टूलबार के रंग को अनुकूलित कर सकते हैं, एक ऐप लोगो जोड़ सकते हैं, आदि, लेकिन सामग्री को क्रोम द्वारा एक अलग प्रक्रिया में रेंडर किया जाता है। पासकी के लिए, CCT के कई लाभ हैं: वे उपयोगकर्ता की कुकीज़ और क्रेडेंशियल को क्रोम के साथ साझा करते हैं, जिसका अर्थ है कि यदि उपयोगकर्ता के पास क्रोम (Google पासवर्ड मैनेजर) के माध्यम से एक पासकी सहेजी गई है, तो कस्टम टैब इसे एक्सेस कर सकता है। उपयोगकर्ता वास्तविक URL और सुरक्षा संकेतक भी देखेगा, जो विश्वास बनाता है। प्रदर्शन अक्सर बेहतर होता है - क्रोम को तेजी से लोड करने के लिए पृष्ठभूमि में "गर्म" किया जा सकता है। और महत्वपूर्ण रूप से, सुरक्षा मजबूत है: क्योंकि यह अनिवार्य रूप से क्रोम ऐप है, Google सुरक्षित ब्राउज़िंग जैसी चीजें सत्र की रक्षा करती हैं, और आपका ऐप पृष्ठ में मनमाना स्क्रिप्ट इंजेक्ट नहीं कर सकता है (कुछ हमलों को रोकना)।
इसका नकारात्मक पक्ष यह है कि इसके लिए उपयोगकर्ता को क्रोम (या एक समर्थित ब्राउज़र) स्थापित और अद्यतित होना आवश्यक है। अधिकांश एंड्रॉइड उपयोगकर्ता करते हैं, लेकिन कुछ क्षेत्रों में कुछ उपकरणों पर, यह एक मुद्दा हो सकता है। कुल मिलाकर, यदि आप एंड्रॉइड पर एक एम्बेडेड वेब दृष्टिकोण के साथ जाते हैं, तो पासकी प्रवाह के लिए क्रोम कस्टम टैब की सिफारिश की जाती है, क्योंकि वे एकीकरण और सुरक्षा का एक अच्छा संतुलन प्रदान करते हैं। वास्तव में, वे कई मायनों में iOS के SFSafariViewController/ASWebAuthSession के अनुरूप हैं - प्रमाणीकरण के लिए डिफ़ॉल्ट ब्राउज़र का लाभ उठाते हैं।
(एक तरफ: Apple का WKWebView बनाम SFSafariViewController और Android का वेबव्यू बनाम CCT में कई समानताएं हैं। सफारी VC और क्रोम टैब दोनों ब्राउज़र स्थिति साझा करते हैं और बेहतर सुरक्षा प्रदान करते हैं, जबकि WKWebView/Android वेबव्यू अधिक नियंत्रण देते हैं लेकिन वेब सामग्री को अलग करते हैं। पासकी के लिए, स्थिति (कुकीज़, क्रेडेंशियल स्टोर) साझा करना आमतौर पर वांछनीय है ताकि पासकी को सहजता से एक्सेस और बनाया जा सके।)
| फ़ीचर | वेबव्यू | क्रोम कस्टम टैब |
|---|---|---|
| उपयोगकर्ता अनुभव | - लचीलापन: वेब सामग्री के साथ बातचीत करने और उपयोगकर्ता इंटरैक्शन के प्रबंधन के लिए एपीआई का एक समृद्ध सेट प्रदान करता है, जिसमें जावास्क्रिप्ट संवाद और अनुमति अनुरोधों को संभालना शामिल है। - संगति: एक सुसंगत UX का प्रबंधन, विशेष रूप से विभिन्न वेब सामग्री के साथ, चुनौतीपूर्ण हो सकता है। | - ब्राउज़र सुविधाएँ: डेटा सेवर और उपकरणों के बीच सिंक्रनाइज़ ऑटो-कम्प्लीट जैसी सुविधाएँ साझा करता है। - बैक बटन: उपयोगकर्ताओं को एक एकीकृत बैक बटन के साथ आसानी से ऐप पर लौटने की अनुमति देता है। - निर्भरता: क्रोम ऐप पर निर्भर करता है, जो सभी उपयोगकर्ता उपकरणों पर उपलब्ध या अद्यतन नहीं हो सकता है। - ब्राउज़र पर रीडायरेक्ट: कुछ फ़ंक्शनलिटीज़ उपयोगकर्ताओं को क्रोम ऐप पर रीडायरेक्ट कर सकती हैं, जिससे उपयोगकर्ता अनुभव बाधित हो सकता है। - आंशिक कस्टम टैब: स्क्रीन का केवल एक हिस्सा क्रोम कस्टम टैब के लिए उपयोग किया जा सकता है जबकि बाकी नेटिव ऐप दिखाता है। - साइड-शीट: लैंडस्केप मोड और बड़े स्क्रीन वाले उपकरणों पर, क्रोम कस्टम टैब केवल स्क्रीन के एक तरफ प्रदर्शित होता है, जबकि बाकी स्क्रीन नेटिव ऐप दिखाती है। |
| डेवलपर अनुभव | - अत्यधिक अनुकूलन योग्य: व्यापक अनुकूलन विकल्प/आवश्यकताएँ प्रदान करता है। - इंटरैक्टिविटी: वेब सामग्री के साथ बातचीत करने और उपयोगकर्ता इंटरैक्शन के प्रबंधन के लिए कई एपीआई प्रदान करता है। | - अनुकूलन योग्य: टूलबार रंग, एक्शन बटन, बॉटम टूलबार, कस्टम मेनू आइटम, और इन/आउट एनिमेशन के अनुकूलन की अनुमति देता है। - कॉलबैक: एक बाहरी नेविगेशन पर एप्लिकेशन को एक कॉलबैक वितरित करता है। - सुरक्षा सुविधाएँ: आउट-ऑफ-द-बॉक्स सुविधाएँ प्रदान करता है, जिससे अनुरोध, अनुमति अनुदान, या कुकी स्टोर के प्रबंधन की आवश्यकता समाप्त हो जाती है। |
| प्रदर्शन | - औसत प्रदर्शन: क्रोम कस्टम टैब (सीसीटी) के समान प्रदर्शन का स्तर प्रदान नहीं कर सकता है। | - प्री-वार्मिंग: पेज लोड समय को बढ़ाने के लिए पृष्ठभूमि में ब्राउज़र की प्री-वार्मिंग और URL की अनुमानित लोडिंग शामिल है। - प्राथमिकता: ऐप्स को "अग्रभूमि" स्तर तक अपनी महत्वता बढ़ाकर इसके उपयोग के दौरान एक कस्टम टैब लॉन्च करने से रोकता है। |
| विश्वास और पहचान | - URL और SSL दिखाई नहीं देते: एक वेबव्यू में URL और SSL जानकारी स्वाभाविक रूप से दिखाई नहीं देती है। जब तक ऐप डेवलपर इन सुविधाओं को लागू नहीं करता है, तब तक उपयोगकर्ताओं को यह नहीं पता चलेगा कि वे सही वेबसाइट पर हैं या फ़िशिंग वाली पर। | - URL और SSL दिखाई देते हैं: पृष्ठों को प्रस्तुत करने के लिए वास्तविक क्रोम ब्राउज़र का उपयोग करता है। उपयोगकर्ता URL और SSL प्रमाणपत्र देख सकते हैं (यह इंगित करता है कि कनेक्शन सुरक्षित है या नहीं)। यह उपयोगकर्ताओं को विश्वास प्रदान कर सकता है कि वे फ़िशिंग साइट पर नहीं हैं। |
| अलगाव | - ऐप की प्रक्रिया के भीतर चलता है: यदि किसी ऐप में एक भेद्यता है जो दुर्भावनापूर्ण कोड निष्पादन की अनुमति देती है, तो यह जोखिम है कि वेबव्यू से समझौता किया जा सकता है। हालांकि, वेबव्यू को अपडेट भी मिलते हैं, लेकिन इसका व्यवहार और सुरक्षा इसका उपयोग करने वाले ऐप पर अधिक निर्भर हो सकता है। - कोई कुकी / सत्र साझाकरण नहीं: डिवाइस के मुख्य ब्राउज़र के साथ कुकीज़ या सत्र साझा नहीं करता है, अलगाव प्रदान करता है लेकिन संभवतः उपयोगकर्ताओं को फिर से लॉग इन करने की आवश्यकता होती है। | - क्रोम की प्रक्रिया के भीतर चलता है: क्रोम का हिस्सा होने के नाते, कस्टम टैब एक ही प्रक्रिया में चलते हैं और क्रोम के समान सुरक्षा अपडेट और सुविधाएँ होती हैं। - साझा कुकी जार और अनुमति मॉडल: यह सुनिश्चित करता है कि उपयोगकर्ताओं को साइटों में फिर से साइन-इन या अनुमतियों को फिर से अनुदान नहीं देना पड़ता है। - क्रोम सेटिंग्स और प्राथमिकताएँ: क्रोम की सेटिंग्स और प्राथमिकताओं का उपयोग करता है। |
| कमजोरियाँ | - क्रेडेंशियल चुराने के लिए कॉलबैक: संभावित कमजोरियों में यह शामिल है कि कभी-कभी जावास्क्रिप्ट की आवश्यकता होती है जो अन्य ऐप्स के लिए दुर्भावनापूर्ण कोड चलाने का द्वार खोलती है, जैसे कि उपयोगकर्ता नाम और पासवर्ड को इंटरसेप्ट करने की कोशिश करने वाले कॉलबैक को पंजीकृत करना। - फ़िशिंग: इसके अतिरिक्त, एक दुर्भावनापूर्ण ऐप एक और वेब पेज खोल सकता है जो फ़िशिंग प्रयास में लिंक प्रवाह की नकल करता है। | - Google सुरक्षित ब्राउज़िंग: उपयोगकर्ता और डिवाइस दोनों को खतरनाक साइटों से बचाने के लिए Google की सुरक्षित ब्राउज़िंग का उपयोग करता है। - सुरक्षित ब्राउज़र सजावट: यह सुनिश्चित करता है कि उपयोगकर्ता हमेशा सटीक URL देखता है जिसके साथ वे बातचीत कर रहे हैं और वेबसाइट की प्रमाणपत्र जानकारी देख सकते हैं, जिससे फ़िशिंग का खतरा कम हो जाता है। इसके अलावा, कस्टम टैब जावास्क्रिप्ट इंजेक्शन की अनुमति नहीं देते हैं। |
| अन्य | - Google ने वेबव्यू पर प्रतिबंध लगा दिया है Google खातों में उपयोगकर्ताओं को लॉग इन करने के लिए। |
आप जो भी कार्यान्वयन दृष्टिकोण चुनें, पासकी कार्यक्षमता को सक्षम करने के लिए कुछ तकनीकी आवश्यकताओं को पूरा किया जाना चाहिए। यह अनुभाग अच्छी तरह से ज्ञात एसोसिएशन फ़ाइलों, iOS एंटाइटलमेंट, और Android वेबव्यू कॉन्फ़िगरेशन पर व्यापक मार्गदर्शन प्रदान करता है।
प्रबंधित उपकरणों पर ध्यान दें: पासकी व्यवहार प्रबंधित उपकरणों पर काफी बदल जाता है जहां मोबाइल डिवाइस प्रबंधन (MDM) नीतियां क्रेडेंशियल भंडारण को नियंत्रित करती हैं। प्रबंधित उपकरणों पर पासकी का परीक्षण करने के लिए, प्रबंधित iOS और Android उपकरणों पर पासकी देखें।
नेटिव और एम्बेडेड वेबव्यू प्रवाह को आपके ऐप और वेब डोमेन के बीच क्रिप्टोग्राफ़िक विश्वास स्थापित करने के लिए एसोसिएशन फ़ाइलों की आवश्यकता होती है। सिस्टम वेबव्यू (ASWebAuthenticationSession) और क्रोम कस्टम टैब को ऐप-टू-साइट एसोसिएशन की आवश्यकता नहीं होती है।
AASA फ़ाइल आपके iOS ऐप और आपके वेब डोमेन के बीच संबंध स्थापित करती है, जिससे पासकी दोनों प्लेटफार्मों पर काम कर सकती है।
फ़ाइल स्थान: https://yourdomain.com/.well-known/apple-app-site-association
कॉन्फ़िगरेशन आवश्यकताएँ:
/.well-known/apple-app-site-association पर होस्ट करेंapplication/json.well-known पथ पर कोई पुनर्निर्देशन नहींउदाहरण AASA फ़ाइल:
{ "webcredentials": { "apps": ["TEAMID123.com.example.app"] } }
AASA कैशिंग और परीक्षण:
Apple AASA फ़ाइलों को आक्रामक रूप से कैश करता है (24-48 घंटे तक) एक CDN का उपयोग करके, जो विकास और परीक्षण को निराशाजनक बना सकता है। विकास के दौरान कैशिंग को बायपास करने के लिए:
?mode=developer जोड़ें⚠️ महत्वपूर्ण: उत्पादन रिलीज़ में ?mode=developer का उपयोग न करें। यह पैरामीटर केवल
विकास के लिए है - इसे उत्पादन में उपयोग करने से iOS आपकी AASA फ़ाइल को ठीक से पता लगाने से
रोकेगा, जिससे पासकी कार्यक्षमता टूट जाएगी।
सत्यापन: अपने कॉन्फ़िगरेशन को सत्यापित करने के लिए Apple का AASA वैलिडेटर का उपयोग करें।
Android आपके ऐप और वेबसाइट के बीच संबंध को सत्यापित करने के लिए डिजिटल एसेट लिंक का उपयोग करता है।
फ़ाइल स्थान: https://yourdomain.com/.well-known/assetlinks.json
कॉन्फ़िगरेशन आवश्यकताएँ:
/.well-known/assetlinks.json पर होस्ट करेंapplication/jsonउदाहरण assetlinks.json फ़ाइल:
[ { "relation": [ "delegate_permission/common.handle_all_urls", "delegate_permission/common.get_login_creds" ], "target": { "namespace": "android_app", "package_name": "com.example.app", "sha256_cert_fingerprints": [ "AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99" ] } } ]
सत्यापन: अपने कॉन्फ़िगरेशन को बनाने और सत्यापित करने के लिए Google का डिजिटल एसेट लिंक जेनरेटर का उपयोग करें।
iOS ऐप्स को पासकी कार्यक्षमता तक पहुंचने के लिए उचित एंटाइटलमेंट की आवश्यकता होती है। आवश्यकताएं आपके कार्यान्वयन दृष्टिकोण के आधार पर थोड़ी भिन्न होती हैं।
एंटाइटलमेंट फ़ाइल (अक्सर Flutter ऐप्स में
Runner.entitlements या नेटिव iOS प्रोजेक्ट में YourApp.entitlements नाम दिया गया)
Apple के सिस्टम द्वारा दी गई विशेष अनुमतियों और क्षमताओं को परिभाषित करती है। पासकी के
लिए, यह फ़ाइल एसोसिएटेड डोमेन को कॉन्फ़िगर करती है।
फ़ाइल स्थान: आमतौर पर आपके Xcode प्रोजेक्ट में ios/Runner/Runner.entitlements पर
नेटिव कार्यान्वयन और एम्बेडेड वेबव्यू को आपके ऐप को आपके वेब डोमेन से लिंक करने के लिए एसोसिएटेड डोमेन क्षमता की आवश्यकता होती है। सिस्टम वेबव्यू (ASWebAuthenticationSession) को इसकी आवश्यकता नहीं होती है क्योंकि यह सफारी संदर्भ में चलता है।
Xcode में सेटअप:
webcredentials: उपसर्ग के साथ अपना डोमेन जोड़ेंउदाहरण कॉन्फ़िगरेशन:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.developer.associated-domains</key> <array> <string>webcredentials:yourdomain.com</string> <string>webcredentials:subdomain.yourdomain.com</string> </array> </dict> </plist>
| दृष्टिकोण | एसोसिएटेड डोमेन आवश्यक | अतिरिक्त कॉन्फ़िगरेशन |
|---|---|---|
| नेटिव कार्यान्वयन | हाँ | समर्पित कार्यान्वयन |
| सिस्टम वेबव्यू | आवश्यक नहीं | डिफ़ॉल्ट वेब सेटअप काम करता है |
| एम्बेडेड वेबव्यू | हाँ | AndroidX WebKit 1.12.1+ कॉन्फ़िगरेशन की आवश्यकता है |
एकाधिक डोमेन: यदि आपके ऐप को कई डोमेन के साथ काम करने की आवश्यकता है तो आपको Related Origin Requests (ROR) की आवश्यकता हो सकती है।
Android एम्बेडेड वेबव्यू ने AndroidX WebKit 1.12 के साथ नेटिव WebAuthn समर्थन प्राप्त किया, जिससे कस्टम जावास्क्रिप्ट ब्रिज कोड की आवश्यकता समाप्त हो गई। सिस्टम वेबव्यू (क्रोम कस्टम टैब) को किसी कॉन्फ़िगरेशन की आवश्यकता नहीं होती है - क्रेडेंशियल स्वचालित रूप से काम करते हैं।
आवश्यकताएँ:
कार्यान्वयन:
import androidx.webkit.WebSettingsCompat import androidx.webkit.WebViewFeature // Check if Web Authentication is supported if (WebViewFeature.isFeatureSupported(WebViewFeature.WEB_AUTHENTICATION)) { // Enable Web Authentication WebSettingsCompat.setWebAuthenticationSupport( webView.settings, WebSettingsCompat.WEB_AUTHENTICATION_SUPPORT_FOR_APP ) // Enable JavaScript webView.settings.javaScriptEnabled = true }
मुख्य बिंदु:
WebViewFeature.WEB_AUTHENTICATION की
जांच करेंmediation:"conditional" (इनपुट फ़ील्ड में पासकी ऑटोफिल)
एम्बेडेड वेबव्यू में काम नहीं करता हैसंस्करण नोट:
AndroidX WebKit 1.12.0 से पहले, एम्बेडेड वेबव्यू में नेटिव WebAuthn समर्थन मौजूद नहीं था। टीमों को या तो करना पड़ता था:
यदि आपको पुराने Android संस्करणों या अद्यतन वेबव्यू APK के बिना उपकरणों का समर्थन करने की आवश्यकता है, तो ब्रिज कोड दृष्टिकोण के लिए Android का क्रेडेंशियल मैनेजर वेबव्यू एकीकरण गाइड देखें। हालांकि, हम आधुनिक ऐप्स के लिए नेटिव WebKit 1.12.1+ दृष्टिकोण का उपयोग करने की दृढ़ता से सलाह देते हैं।
सिफारिश: AndroidX WebKit 1.12.1+ के साथ नेटिव WebAuthn समर्थन का उपयोग करें। यदि रनटाइम पर अनुपलब्ध है, तो क्रोम कस्टम टैब पर वापस जाएं जो साझा क्रेडेंशियल के साथ उत्कृष्ट पासकी समर्थन प्रदान करता है।
नेटिव ऐप्स में पासकी लागू करते समय, आपको अपने ऐप और वेब डोमेन (डोमेनों) के बीच विश्वास स्थापित करने की आवश्यकता होती है। यह अनुभाग एकल डोमेन, एकाधिक संबंधित डोमेन (ROR) को कैसे संभालें और अपनी वेल-नोन एसोसिएशन फ़ाइलों को ठीक से कॉन्फ़िगर किया गया है या नहीं, यह कैसे सत्यापित करें, इसे कवर करता है।
एकल डोमेन (जैसे kayak.com) का उपयोग करने वाले ऐप्स के लिए, आपको चाहिए:
webcredentials:kayak.com के साथ कॉन्फ़िगर किया गया एसोसिएटेड डोमेन एंटाइटलमेंटसंबंधित ऑरिजिन्स (ROR) एक WebAuthn सुविधा है जो पासकी के एक ही सेट को कई संबंधित डोमेनों
(जैसे kayak.com, kayak.de, kayak.co.uk) में काम करने की अनुमति देती है।
ROR संबंधित ऑरिजिन्स को परिभाषित
करने के लिए प्रत्येक साइट पर /.well-known/webauthn एंडपॉइंट का उपयोग करता है, न कि AASA
या assetlinks फ़ाइलों का।
मुख्य बिंदु:
/.well-known/webauthn होस्ट करता हैकॉन्फ़िगरेशन उदाहरण:
यदि आपका ऐप kayak.com और kayak.de के साथ काम करता है, तो दोनों डोमेनों को चाहिए:
लाइव होने से पहले, सत्यापित करें कि आपकी वेल-नोन फ़ाइलें ठीक से कॉन्फ़िगर और सुलभ हैं। Apple और Google फ़ाइल उपलब्धता की जांच के लिए CDN-आधारित परीक्षण URL प्रदान करते हैं:
| डोमेन | Apple AASA सत्यापन | Google डिजिटल एसेट लिंक सत्यापन |
|---|---|---|
| kayak.com | AASA फ़ाइल का परीक्षण करें जांचें कि क्या Apple CDN आपकी फ़ाइल को पुनः प्राप्त कर सकता है | assetlinks.json का परीक्षण करें सत्यापित करें कि Google आपके एसेट लिंक तक पहुंच सकता है |
| kayak.de | AASA फ़ाइल का परीक्षण करें जांचें कि क्या Apple CDN आपकी फ़ाइल को पुनः प्राप्त कर सकता है | assetlinks.json का परीक्षण करें सत्यापित करें कि Google आपके एसेट लिंक तक पहुंच सकता है |
इन परीक्षण URL का उपयोग करना:
?nocache=1 पैरामीटर ताज़ा पुनर्प्राप्ति को मजबूर करता है, CDN कैश को बायपास
करता हैkayak.com या kayak.de को अपने स्वयं के डोमेन (डोमेनों) से
बदलेंपरीक्षण की एक खास बात: सुनिश्चित करें कि सभी डोमेनों में ठीक से कॉन्फ़िगर की गई वेल-नोन फ़ाइलें हैं। किसी भी डोमेन पर एक लापता या गलत कॉन्फ़िगर की गई फ़ाइल उस डोमेन के लिए पासकी कार्यक्षमता को तोड़ सकती है।
अधिक जानकारी: नेटिव ऐप्स में WebAuthn Relying Party ID
सही कार्यान्वयन दृष्टिकोण चुनना आपके ऐप की प्रमाणीकरण वास्तुकला, OAuth आवश्यकताओं और सत्र नियंत्रण की आवश्यकता पर निर्भर करता है। आगे का सबसे अच्छा रास्ता निर्धारित करने के लिए इस निर्णय वृक्ष का उपयोग करें।
इन प्रमुख प्रश्नों से शुरू करें:
क्या आपका ऐप OAuth-आधारित लॉगिन (OAuth2, OIDC, सामाजिक लॉगिन प्रदाता) का उपयोग करता है?
ASWebAuthenticationSession का उपयोग करेंक्या आप नेटिव-जैसे शेल में वेब प्रमाणीकरण का पुन: उपयोग करना चाहते हैं (कोई URL बार नहीं, पूर्ण UI नियंत्रण)?
WKWebView + एसोसिएटेड डोमेन एंटाइटलमेंटWebView + AndroidX WebKit 1.12.1+ कॉन्फ़िगरेशनक्या आप एक नया नेटिव ऐप बना रहे हैं या आपके पास नेटिव लॉगिन स्क्रीन हैं?
क्या आपके पास मौजूदा वेब प्रमाणीकरण है जिसे आप पुन: उपयोग करना चाहते हैं?
यहां बताया गया है कि प्रत्येक दृष्टिकोण प्रमुख आयामों में कैसा प्रदर्शन करता है:
| दृष्टिकोण | पासकी बनाएं | पासकी का उपयोग करें | पासकी प्रबंधित करें | तकनीकी जटिलता | OAuth समर्थन | सेटअप समय |
|---|---|---|---|---|---|---|
| नेटिव कार्यान्वयन | उच्च अपनाने की दर सहज बायोमेट्रिक, सर्वश्रेष्ठ UX | तुरंत, साइलेंटpreferImmediatelyAvailableCredentials ऐप शुरू होने पर स्वचालित ओवरले सक्षम करता है | पूर्ण नेटिव नियंत्रण ऐप सेटिंग्स के साथ एकीकृत करें | मध्यम-उच्च प्लेटफ़ॉर्म-विशिष्ट API | अलग OAuth प्रवाह कार्यान्वयन की आवश्यकता है | सप्ताह से महीने |
| सिस्टम वेबव्यू | अच्छी अपनाने की दर ब्राउज़र जैसा अनुभव, परिचित | मानक ब्राउज़र UX इनपुट फ़ील्ड में कंडीशनल UI, साझा कीचेन | ब्राउज़र-आधारित उपयोगकर्ता ब्राउज़र के माध्यम से प्रबंधन करते हैं | निम्न न्यूनतम नेटिव कोड | उत्कृष्ट OAuth के लिए विशेष रूप से निर्मित | दिन से सप्ताह |
| एम्बेडेड वेबव्यू | कम अपनाने की दर कॉन्फ़िगरेशन की आवश्यकता है | नेटिव WebAuthn समर्थन WebKit 1.12.1+, कोई कंडीशनल UI नहीं | सीमित नियंत्रण कोई नेटिव एकीकरण नहीं | मध्यम-उच्च वेबव्यू कॉन्फ़िगरेशन + अनुमतियाँ | कॉन्फ़िगरेशन की आवश्यकता है | 1-2 सप्ताह |
आयाम स्पष्टीकरण:
अनुशंसित: सिस्टम वेबव्यू
यदि आपका ऐप OAuth2, OIDC या सामाजिक लॉगिन प्रदाताओं (Google, GitHub, Microsoft, आदि) के माध्यम से प्रमाणित होता है, तो सिस्टम वेबव्यू इष्टतम विकल्प है:
ASWebAuthenticationSession OAuth प्रवाह के लिए विशेष रूप से बनाया गया हैउदाहरण: kayak.com और kayak.de जैसे ट्रैवल ऐप्स प्रमाणीकरण के लिए OAuth का उपयोग करते हैं। सिस्टम वेबव्यू उन्हें अपने मौजूदा OAuth बुनियादी ढांचे को बनाए रखते हुए अपने वेब प्रमाणीकरण पृष्ठों के माध्यम से पासकी समर्थन जोड़ने की अनुमति देता है।
अनुशंसित: हाइब्रिड दृष्टिकोण
प्रारंभिक OAuth प्रमाणीकरण के लिए सिस्टम वेबव्यू का उपयोग करें, फिर पोस्ट-ऑथ सत्रों के लिए एम्बेडेड वेबव्यू का उपयोग करें:
कब उपयोग करें: वे ऐप्स जो OAuth के माध्यम से प्रमाणित होते हैं लेकिन फिर प्रमाणित वेब सामग्री प्रदर्शित करने की आवश्यकता होती है जहां प्रत्यक्ष सत्र हेरफेर की आवश्यकता होती है।
अनुशंसित: नेटिव कार्यान्वयन
स्क्रैच से निर्माण कर रहे हैं या नेटिव स्क्रीन हैं? पूरी तरह से नेटिव जाएं:
preferImmediatelyAvailableCredentials का उपयोग करें - केवल नेटिव कार्यान्वयन के लिए
विशेष और उच्चतम रूपांतरण दर प्रदान करता हैनए ऐप्स के लिए: पहले दिन से नेटिव लॉगिन बनाने की दृढ़ता से सलाह देते हैं। आपको इष्टतम UX के लिए स्थापित करता है और भविष्य के वेबव्यू-टू-नेटिव माइग्रेशन से बचाता है।
अनुशंसित: चरणबद्ध प्रवासन
यह चरणबद्ध दृष्टिकोण मौजूदा उपयोगकर्ताओं को बाधित किए बिना वृद्धिशील सुधारों की अनुमति देता है।
| आवश्यकता | नेटिव | सिस्टम वेबव्यू | एम्बेडेड वेबव्यू |
|---|---|---|---|
| वेल-नोन फ़ाइलें (AASA/assetlinks) | आवश्यक | आवश्यक नहीं | आवश्यक |
| iOS एसोसिएटेड डोमेन | आवश्यक | आवश्यक नहीं | आवश्यक |
| Android WebKit लाइब्रेरी | लागू नहीं | आवश्यक नहीं | आवश्यक (1.12.1+) |
| Relying Party ID | डोमेन से मेल खाना चाहिए | डोमेन से मेल खाना चाहिए | डोमेन से मेल खाना चाहिए |
विस्तृत कॉन्फ़िगरेशन निर्देशों के लिए अनुभाग 5 देखें।
नेटिव ऐप्स में पासकी का परीक्षण करने के लिए एक संरचित, बहु-स्तरीय दृष्टिकोण की आवश्यकता होती है। परीक्षण पिरामिड का पालन करें: यूनिट परीक्षण (पृथक तर्क), एकीकरण परीक्षण (सिमुलेटर/एम्यूलेटर पर WebAuthn समारोह), और सिस्टम परीक्षण (भौतिक उपकरणों पर एंड-टू-एंड)।
आवश्यक परीक्षण श्रेणियां:
स्वचालन रणनीतियों, प्लेटफ़ॉर्म-विशिष्ट समस्याओं और एक पूर्ण प्री-फ़्लाइट चेकलिस्ट सहित व्यापक परीक्षण मार्गदर्शन के लिए, हमारी समर्पित गाइड देखें: नेटिव iOS और Android ऐप्स में पासकी प्रवाह का परीक्षण।
सफल पारंपरिक लॉगिन (पासवर्ड, OAuth) के बाद उपयोगकर्ताओं को पासकी बनाने के लिए संकेत देने पर विचार करें। यह क्रमिक रूपांतरण दृष्टिकोण:
उदाहरण: सिस्टम वेबव्यू के माध्यम से OAuth लॉगिन के बाद, एक नेटिव संकेत दिखाएं: "फेस आईडी के साथ तेज़ लॉगिन सक्षम करें?" यदि स्वीकार किया जाता है, तो सिस्टम वेबव्यू में लोड किए गए वेब पेज के माध्यम से पासकी बनाएं।
पासकी को कैसे लागू किया जाए - नेटिव कार्यान्वयन, सिस्टम वेबव्यू या एम्बेडेड वेबव्यू के माध्यम से - यह तय करना एक महत्वपूर्ण डिज़ाइन विकल्प है जो सुरक्षा, उपयोगकर्ता अनुभव और विकास जटिलता को प्रभावित करता है। इसका कोई एक-आकार-सभी-के-लिए-फिट उत्तर नहीं है।
OAuth-आधारित ऐप्स के लिए: सिस्टम वेबव्यू (ASWebAuthenticationSession, क्रोम कस्टम टैब) अनुशंसित प्रारंभिक बिंदु है। यह उत्कृष्ट OAuth समर्थन, न्यूनतम कार्यान्वयन प्रयास और स्वचालित क्रेडेंशियल साझाकरण प्रदान करता है।
नेटिव-फर्स्ट ऐप्स के लिए: जितनी जल्दी हो सके नेटिव बनें। एक नेटिव पासकी लॉगिन
preferImmediatelyAvailableCredentials जैसी विशेष क्षमताओं के साथ सबसे सहज UX प्रदान करता
है, जो ऐप शुरू होने पर स्वचालित पासकी ओवरले को सक्षम करता है - कुछ ऐसा जो वेबव्यू
कार्यान्वयन प्रदान नहीं कर सकता है। अब iOS और Android पासकी के लिए प्रथम-श्रेणी का समर्थन
प्रदान कर रहे हैं, वास्तविक दुनिया की सफलताएँ उच्च अपनाने को प्रदर्शित करती हैं। टूलिंग
(ओपन-सोर्स SDK और प्लेटफ़ॉर्म लाइब्रेरी सहित) उचित समय सीमा में नेटिव एकीकरण को प्राप्त
करने योग्य बनाने के लिए परिपक्व हो गई है। जबकि आपको डिवाइस प्रबंधन नीतियों, क्रॉस-डिवाइस
सिंक, और तृतीय-पक्ष प्रदाताओं से सावधान रहना चाहिए, इन चुनौतियों को सावधानीपूर्वक
इंजीनियरिंग और परीक्षण के साथ प्रबंधित किया जा सकता है। परिणाम एक ऐप लॉगिन है जो
उपयोगकर्ताओं को इसकी आसानी और गति से प्रसन्न करता है जबकि सुरक्षा में काफी सुधार करता है।
एम्बेडेड वेबव्यू फ्रेम आवश्यकताओं के लिए: एम्बेडेड वेबव्यू का उपयोग आमतौर पर दो वास्तविक दुनिया के परिदृश्यों में किया जाता है। पहला, OAuth-आधारित ऐप्स अक्सर प्रारंभिक लॉगिन प्रवाह के लिए सिस्टम वेबव्यू का उपयोग करते हैं, फिर सत्र नियंत्रण की आवश्यकता होने पर सेटिंग्स स्क्रीन में पासकी प्रबंधन विकल्पों को प्रस्तुत करने के लिए एम्बेडेड वेबव्यू पर स्विच करते हैं - हालांकि कुछ ऐप्स दोनों प्रवाह के लिए सिस्टम वेबव्यू रखकर इसे सरल बनाते हैं। दूसरा, वे ऐप्स जो पासकी अपनाने से पहले अपने प्रमाणीकरण प्रवाह को वेबव्यू फ्रेम में पहले से ही एम्बेड कर चुके हैं, वे संगति के लिए इस पैटर्न को जारी रखते हैं। नेटिव WebAuthn समर्थन (AndroidX WebKit 1.12.1+) के साथ एम्बेडेड वेबव्यू को कॉन्फ़िगरेशन और सेटअप (अनुमतियाँ, एंटाइटलमेंट, वेबव्यू सेटिंग्स) की आवश्यकता होती है, लेकिन अब कस्टम जावास्क्रिप्ट ब्रिज कोड की आवश्यकता नहीं है। ध्यान दें कि एम्बेडेड वेबव्यू में कंडीशनल UI समर्थित नहीं है। इस दृष्टिकोण को तब चुनें जब मौजूदा एम्बेडेड प्रमाणीकरण पैटर्न को बनाए रखना हो या जब आपको पोस्ट-प्रमाणीकरण स्क्रीन के लिए सत्र/कुकी नियंत्रण की आवश्यकता हो।
अंततः, नेटिव ऐप्स में पासकी उपयोगकर्ता सुविधा और सुरक्षा दोनों में एक बड़ी छलांग का प्रतिनिधित्व करती हैं। चाहे नेटिव, सिस्टम वेबव्यू, या एम्बेडेड वेबव्यू के माध्यम से लागू किया गया हो, वे आपके उपयोगकर्ताओं के लिए फ़िशिंग जोखिम और पासवर्ड प्रबंधन बोझ को खत्म करते हैं। VicRoads के नेटिव ऐप पासकी एकीकरण जैसे वास्तविक दुनिया के कार्यान्वयन यह प्रदर्शित करते हैं कि नेटिव-फर्स्ट दृष्टिकोण स्वचालित पासकी ओवरले जैसी सुविधाओं के साथ ठीक से निष्पादित होने पर उच्चतम उपयोगकर्ता अपनाने और संतुष्टि प्रदान करते हैं। उपयोगकर्ता-अनुकूल प्रमाणीकरण के लिए सर्वोत्तम प्रथाओं का पालन करके और आपके ऐप की वास्तुकला से मेल खाने वाले कार्यान्वयन दृष्टिकोण को चुनकर - नए ऐप्स के लिए नेटिव-फर्स्ट, OAuth प्रवाह के लिए सिस्टम वेबव्यू, या मौजूदा एम्बेडेड पैटर्न के लिए एम्बेडेड वेबव्यू - आप पासवर्ड रहित, बायोमेट्रिक लॉगिन की पेशकश कर सकते हैं जो वास्तव में पासकी के दृष्टिकोण को साकार करते हैं: सभी के लिए सरल, सुरक्षित और आनंदमय प्रमाणीकरण।
यदि आपके नेटिव ऐप में पासकी काम नहीं कर रही हैं, तो कार्यान्वयन दृष्टिकोण के अनुसार इन सामान्य समस्याओं की जाँच करें:
application/json.well-known पथ पर कोई पुनर्निर्देशन नहींhttps://your-domain.com (app:// नहीं)webcredentials:yourdomain.com के साथ एसोसिएटेड डोमेन क्षमता सक्षम
हैASWebAuthenticationSession (अनुशंसित) या SFSafariViewController का उपयोग
करना?mode=developer के साथ परीक्षण करें (उत्पादन के लिए हटा दें)WebViewFeature.WEB_AUTHENTICATION के लिए रनटाइम सुविधा जाँचsetWebAuthenticationSupport() को WEB_AUTHENTICATION_SUPPORT_FOR_APP के
साथ कॉल किया गया"NotAllowedError: The request is not allowed by the user agent or the platform in the current context"
setWebAuthenticationSupport() कॉलकोई पासकी संकेत दिखाई नहीं देता
?mode=developer का
उपयोग करें, वेबव्यू प्रकार सत्यापित करेंविस्तृत डीबगिंग के लिए, नेटिव ऐप्स में Relying Party IDs पर हमारा लेख देखें।
कॉर्बाडो नेटिव SDK:
प्लेटफ़ॉर्म दस्तावेज़ीकरण:
सत्यापन उपकरण:
Passkeys Series: Native Apps
Related Articles
Passkey Tutorial: How to Implement Passkeys in Web Apps
Vincent - December 7, 2023
The High-Level Architecture of an Integrated Passkey Flow
Janina - December 21, 2022
Table of Contents