Android के लिए Navigation SDK को सुरक्षित करने के लिए, App Check का इस्तेमाल करना
Firebase App Check, Google Maps Platform पर आपके ऐप्लिकेशन से किए जाने वाले कॉल को सुरक्षित रखता है. इसके लिए, यह आपके असली ऐप्लिकेशन के अलावा अन्य सोर्स से आने वाले ट्रैफ़िक को ब्लॉक करता है. यह सुविधा, Play Integrity जैसे पुष्टि करने वाले किसी सोर्स से, ऐप्लिकेशन या डिवाइस की प्रमाणिकता का आकलन करने का अनुरोध करके काम करती है. अपने ऐप्लिकेशन को App Check के साथ इंटिग्रेट करने पर, आपको नुकसान पहुंचाने वाले और बिना अनुमति वाले अनुरोधों से सुरक्षा मिलती है. इससे, आपके बिलिंग को बिना अनुमति वाले शुल्क से बचाया जा सकता है. App Check, आपके फ़्लीट ऐप्लिकेशन के ईकोसिस्टम में, रीयल-टाइम में होने वाली गड़बड़ियों की रिपोर्टिंग को भी बेहतर बनाता है. इससे, आपका ऐप्लिकेशन इस्तेमाल करने वाले सभी ड्राइवर को फ़ायदा मिलता है. ज़्यादा जानकारी के लिए, गड़बड़ी की रिपोर्टिंग देखें.
App Check का इस्तेमाल क्यों करें?
App Check, Android के लिए Navigation SDK के दो अलग-अलग हिस्सों को सुरक्षित रखता है: नेविगेशन की मुख्य सुविधा और गड़बड़ी की रिपोर्टिंग.
नेविगेशन
App Check, Android के लिए मुख्य Navigation SDK के अनुरोधों को, नुकसान पहुंचाने वाले या बिना अनुमति वाले सोर्स से ब्लॉक करने में मदद करता है. इससे आपको सीधे तौर पर फ़ायदा मिलता है, क्योंकि यह आपके प्रोजेक्ट को बिलिंग में धोखाधड़ी और कोटा खत्म होने से बचाता है.
गड़बड़ी की रिपोर्टिंग
अगर आपका ऐप्लिकेशन, रीयल-टाइम में गड़बड़ी की रिपोर्टिंग और वोटिंग की सुविधाओं के साथ काम करता है, तो App Check का इस्तेमाल करने का सुझाव दिया जाता है. App Check को चालू करने से, यह पक्का होता है कि आपके ड्राइवर को सबसे सटीक रास्ते मिलें. इसके लिए, रीयल-टाइम में मिलने वाले सभी फ़ीडबैक को ध्यान में रखा जाता है.
रिपोर्टिंग के लिए, App Check क्यों ज़रूरी है:
- रास्ते बंद होने की जानकारी के लिए, भरोसे का ऊंचा स्तर: रास्ते बंद होने जैसे इवेंट, सभी ड्राइवर के लिए रूटिंग के व्यवहार को काफ़ी हद तक बदल सकते हैं. मैप को तोड़-फोड़, स्पैम या गलत रिपोर्टिंग से बचाने के लिए, Google का मॉडरेशन इन्फ़्रास्ट्रक्चर, डिवाइस और ऐप इंटेग्रिटी के मज़बूत सिग्नल पर निर्भर करता है. यह इन्फ़्रास्ट्रक्चर, रास्ते बंद होने की वजह से होने वाली गड़बड़ियों की रिपोर्टिंग के लिए काम करता है.
- App Check, रिपोर्ट की पुष्टि कैसे करता है: Android के लिए Navigation SDK से भेजे गए, उपयोगकर्ता की रिपोर्ट और वोट में App Check टोकन शामिल होता है. Google का बैकएंड, इस टोकन का इस्तेमाल करके, फ़ीडबैक की वैधता की पुष्टि करता है. इससे, फ़ीडबैक के भरोसे का लेवल बढ़ता है और लाइव मैप पर पड़ने वाले असर के लिए उसका आकलन किया जा सकता है.
- App Check को शामिल न करने पर पड़ने वाला असर: मान्य App Check टोकन के बिना सबमिट की गई रिपोर्ट का आकलन, कम भरोसे वाले मॉडल के तहत किया जाता है. साथ ही, इन्हें सिर्फ़ साइलेंट सिग्नल के तौर पर प्रोसेस किया जा सकता है. इसका मतलब है कि आपके उपयोगकर्ता अब भी रिपोर्ट कर सकते हैं और वोट कर सकते हैं. हालांकि, उनकी रिपोर्ट के मैप पर दिखने या अन्य ड्राइवर के रास्तों पर असर पड़ने की संभावना कम होती है. साथ ही, इसके लिए अतिरिक्त पुष्टि की ज़रूरत होगी.
क्या App Check मेरे लिए सही है?
ज़्यादातर मामलों में, App Check का इस्तेमाल करने का सुझाव दिया जाता है. हालांकि, इन स्थितियों में App Check की ज़रूरत नहीं होती या यह काम नहीं करता:
- निजी या एक्सपेरिमेंटल ऐप्लिकेशन: अगर आपका ऐप्लिकेशन सार्वजनिक तौर पर उपलब्ध नहीं है, तो App Check की ज़रूरत नहीं है.
- सुरक्षा से समझौता किए गए डिवाइस: पुष्टि करने वाले सुझाए गए सोर्स, Android के लिए Navigation SDK को भरोसेमंद न माने जाने वाले डिवाइसों पर चलने से रोकते हैं. जैसे, रूट किए गए या जेलब्रेक किए गए फ़ोन. इन डिवाइसों के लिए, पुष्टि करने वाले किसी कस्टम सोर्स को डिप्लॉय करें.
- नॉन-जीएमएस Android डिवाइस: Android डिवाइसों पर, Play Integrity के लिए Google Mobile Services (GMS) का इस्तेमाल करना ज़रूरी है. अगर आपका प्लान, नॉन-जीएमएस Android डिवाइसों के लिए सहायता उपलब्ध कराने का है, तो पुष्टि करने वाले किसी कस्टम सोर्स को डिप्लॉय करें.
लागू करने के चरणों की खास जानकारी
अपने ऐप्लिकेशन को App Check के साथ इंटिग्रेट करने के लिए, आपको ये चरण पूरे करने होंगे:
- अपने ऐप्लिकेशन में Firebase जोड़ें.
- App Check लाइब्रेरी जोड़ें और App Check को शुरू करें.
- टोकन सोर्स जोड़ें. इस चरण में, डिवाइस या ऐप्लिकेशन की इंटिग्रिटी की पुष्टि करने के लिए, अपनी पसंद के पुष्टि करने वाले सोर्स को कॉल किया जाता है.
- नेविगेशन और App Check API को शुरू करें.
- डीबग करने की सुविधा चालू करें. यह सुविधा, डेवलपमेंट या लगातार इंटिग्रेशन (सीआई) एनवायरमेंट के दौरान काम आती है.
- एनफ़ोर्समेंट की सुविधा चालू करने से पहले, अपने ऐप्लिकेशन के अनुरोधों को मॉनिटर करें. इससे, आपके उपयोगकर्ताओं को कोई परेशानी हुए बिना, App Check को आसानी से लागू किया जा सकता है.
App Check इंटिग्रेशन की योजना बनाते समय ध्यान रखने वाली बातें
- पुष्टि करने वाले सोर्स के कोटे: पुष्टि करने वाले जिस सोर्स का हम सुझाव देते हैं वह है Play Integrity. इसके स्टैंडर्ड एपीआई इस्तेमाल करने के टीयर के लिए, हर दिन कॉल करने की सीमा तय है. कॉल करने की सीमाओं के बारे में ज़्यादा जानने के लिए, Google Play Integrity के डेवलपर दस्तावेज़ में सेटअप पेज देखें.
- स्टार्टअप में लगने वाला समय: ज़्यादातर स्थितियों में, आपके उपयोगकर्ताओं को सामान्य इस्तेमाल के दौरान, कोई समस्या नहीं होगी. इसकी वजह यह है कि App Check टोकन, डिवाइस पर कैश किए जाते हैं. सिस्टम, App Check टोकन को एक्सपायर होने से पहले, बैकग्राउंड में अपने-आप रीफ़्रेश करता है, ताकि परफ़ॉर्मेंस में कोई रुकावट न आए. हालांकि, अगर कोई मान्य App Check टोकन मौजूद नहीं है, तो आपके ऐप्लिकेशन के उपयोगकर्ताओं को स्टार्टअप में कुछ समय लगेगा. उदाहरण के लिए, यह समस्या तब होती है, जब कैश किया गया टोकन एक्सपायर हो जाता है या मौजूद नहीं होता है.
- टोकन टीटीएल: टाइम टू लिव (टीटीएल) से यह तय होता है कि App Check टोकन, रीफ़्रेश होने से पहले कितने समय तक मान्य रहेगा. Firebase कंसोल में, इस अवधि को 30 मिनट से लेकर सात दिनों तक कॉन्फ़िगर किया जा सकता है. सुरक्षित बेसलाइन के तौर पर, एक घंटे की अवधि का सुझाव दिया जाता है. हालांकि, SDK टूल, टीटीएल की अवधि के लगभग आधे समय पर, बैकग्राउंड में रीफ़्रेश करने की कोशिश करता है. कंसोल के निर्देशों के बारे में जानने के लिए, Firebase App Check का दस्तावेज़ देखें.
अपने ऐप्लिकेशन को App Check के साथ इंटिग्रेट करना
ज़रूरी शर्तें और ज़रूरतें
- ऐसा ऐप्लिकेशन जिसमें Android के लिए Navigation SDK का 7.9 या इसके बाद का वर्शन इंस्टॉल हो.
- आपके ऐप्लिकेशन का SHA-256 सर्टिफ़िकेट फ़िंगरप्रिंट.
- आपके ऐप्लिकेशन का पैकेज नाम.
- आपके पास, Google Cloud Console में ऐप्लिकेशन का मालिकाना हक होना चाहिए.
- Google Cloud Console से, आपके ऐप्लिकेशन का प्रोजेक्ट आईडी.
पहला चरण: अपने ऐप्लिकेशन में Firebase जोड़ना
अपने ऐप्लिकेशन में Firebase जोड़ने के लिए, Firebase के डेवलपर दस्तावेज़ में दिए गए निर्देशों का पालन करें. अपने प्रोजेक्ट की ऐप्लिकेशन लेवल वाली डायरेक्ट्री में, google-services.json फ़ाइल जोड़ें.
दूसरा चरण: App Check लाइब्रेरी जोड़ना और App Check को शुरू करना
अपने ऐप्लिकेशन की build.gradle फ़ाइल में, App Check की डिपेंडेंसी जोड़ें:
Groovy (build.gradle)
dependencies { // Import the Firebase BoM implementation platform('com.google.firebase:firebase-bom:34.17.0') // Add the dependency for the App Check library with Play Integrity implementation 'com.google.firebase:firebase-appcheck-playintegrity' }
अपनी Application क्लास या मुख्य गतिविधि में, App Check को शुरू करें:
Java
import com.google.firebase.FirebaseApp; import com.google.firebase.appcheck.FirebaseAppCheck; import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory; // Initialize Firebase App FirebaseApp.initializeApp(/* context= */ this); // Initialize App Check FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance());
Kotlin
import com.google.firebase.Firebase import com.google.firebase.appcheck.appCheck import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory import com.google.firebase.initialize // Initialize Firebase App Firebase.initialize(context = this) // Initialize App Check Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), )
तीसरा चरण: टोकन सोर्स जोड़ना
MapsAppCheckTokenProvider इंटरफ़ेस का कोई लागू करने वाला सोर्स बनाएं. यह सोर्स, Firebase App Check से App Check टोकन को एसिंक्रोनस तरीके से फ़ेच करता है और MapsAppCheckTokenCallback का इस्तेमाल करके, उन्हें Android के लिए Navigation SDK के नेटवर्क स्टैक को पास करता है:
Java
import com.google.android.gms.maps.MapsAppCheckTokenCallback; import com.google.android.gms.maps.MapsAppCheckTokenProvider; import com.google.firebase.appcheck.FirebaseAppCheck; public class NavigationTokenProvider implements MapsAppCheckTokenProvider { @Override public void fetchToken(MapsAppCheckTokenCallback callback) { FirebaseAppCheck.getInstance() .getAppCheckToken(false) // forcingRefresh = false .addOnSuccessListener( tokenResult -> { String token = tokenResult.getToken(); callback.onSuccess(token); }) .addOnFailureListener( e -> { callback.onFailure(); }); } }
Kotlin
import com.google.android.gms.maps.MapsAppCheckTokenCallback import com.google.android.gms.maps.MapsAppCheckTokenProvider import com.google.firebase.appcheck.FirebaseAppCheck class NavigationTokenProvider : MapsAppCheckTokenProvider { override fun fetchToken(callback: MapsAppCheckTokenCallback) { FirebaseAppCheck.getInstance() .getAppCheckToken(false) .addOnSuccessListener { tokenResult -> callback.onSuccess(tokenResult.token) } .addOnFailureListener { callback.onFailure() } } }
चौथा चरण: नेविगेशन और App Check API को शुरू करना
Android के लिए Navigation SDK को शुरू करें और MapsApiSettings.setAppCheckTokenProvider() का इस्तेमाल करके, अपने यूनीफ़ाइड टोकन सोर्स इंस्टेंस को रजिस्टर करें:
Java
import com.google.android.gms.maps.MapsApiSettings; // Register your App Check token provider before initializing Navigation SDK for Android MapsApiSettings.setAppCheckTokenProvider(context, new NavigationTokenProvider());
Kotlin
import com.google.android.gms.maps.MapsApiSettings // Register your App Check token provider before initializing Navigation SDK for Android MapsApiSettings.setAppCheckTokenProvider(context, NavigationTokenProvider())
पांचवा चरण: डीबग करने की सुविधा चालू करना (ज़रूरी नहीं)
Android के लिए Navigation SDK पर App Check लागू होने के बाद, आपके ऐप्लिकेशन की वे सुविधाएं सिम्युलेटर या कंटीन्यूअस इंटिग्रेशन (सीआई) एनवायरमेंट में नहीं चलेंगी जो Android के लिए Navigation SDK पर निर्भर करती हैं. इसकी वजह यह है कि इन एनवायरमेंट को मान्य डिवाइस नहीं माना जाता. डेवलपमेंट और टेस्टिंग के दौरान, इन एनवायरमेंट में अपने ऐप्लिकेशन को चलाने के लिए, आपको अपने ऐप्लिकेशन का डीबग बिल्ड बनाना होगा. यह बिल्ड, प्रोडक्शन के लिए पुष्टि करने वाले सोर्स के बजाय, App Check के डीबग सोर्स का इस्तेमाल करता है.
- अपने ऐप्लिकेशन की
build.gradleफ़ाइल में, डीबग सोर्स की डिपेंडेंसी जोड़ें:Groovy (build.gradle)
dependencies { implementation 'com.google.firebase:firebase-appcheck-debug' }
- अपने डीबग बिल्ड में, डीबग सोर्स फ़ैक्ट्री का इस्तेमाल करने के लिए, App Check को कॉन्फ़िगर करें:
Java
import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory; import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory; if (BuildConfig.DEBUG) { firebaseAppCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance() ); } else { firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance() ); }
Kotlin
import com.google.firebase.Firebase import com.google.firebase.appcheck.appCheck import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory if (BuildConfig.DEBUG) { Firebase.appCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance(), ) } else { Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), ) }
- अपने ऐप्लिकेशन को एम्युलेटर या डीबग डिवाइस पर लॉन्च करें. App Check, आपके लॉगकैट आउटपुट में, स्थानीय डीबग टोकन प्रिंट करेगा.
- इस डीबग टोकन को कॉपी करें और Firebase कंसोल में रजिस्टर करें. ज़्यादा जानकारी के लिए, Firebase App Check के डीबग सोर्स का दस्तावेज़ देखें.
छठा चरण: अपने ऐप्लिकेशन के अनुरोधों को मॉनिटर करना और एनफ़ोर्समेंट के बारे में फ़ैसला लेना
एनफ़ोर्समेंट की सुविधा चालू करने से पहले, अपने ऐप्लिकेशन के अनुरोधों को मॉनिटर करें, ताकि यह पक्का किया जा सके कि असली उपयोगकर्ताओं को कोई समस्या न हो.
- पुष्टि किए गए और पुष्टि नहीं किए गए ट्रैफ़िक का प्रतिशत देखने के लिए, Firebase कंसोल में App Check की मेट्रिक वाली स्क्रीन पर जाएं.
- जब आपको पक्का हो जाए कि आपके ज़्यादातर ट्रैफ़िक की पुष्टि हो गई है और असली उपयोगकर्ताओं ने आपके ऐप्लिकेशन के उस वर्शन को अपडेट कर लिया है जिसमें App Check को लागू किया गया है, तब एनफ़ोर्समेंट की सुविधा चालू करें.
- एनफ़ोर्समेंट की सुविधा चालू होने के बाद, App Check, मान्य App Check टोकन के बिना आने वाले सभी ट्रैफ़िक को अस्वीकार कर देगा.