Android के लिए Navigation SDK को सुरक्षित करने के लिए, App Check का इस्तेमाल करना

Firebase App Check, आपके ऐप्लिकेशन से Google Maps Platform पर किए जाने वाले कॉल को सुरक्षित रखता है. इसके लिए, यह आपके मान्य ऐप्लिकेशन के अलावा, अन्य सोर्स से आने वाले ट्रैफ़िक को ब्लॉक करता है. इसके लिए, यह Play Integrity जैसी पुष्टि करने वाली सेवा से, ऐप्लिकेशन या डिवाइस की प्रामाणिकता की जांच करने का अनुरोध करता है. अपने ऐप्लिकेशन को App Check के साथ इंटिग्रेट करने पर, आपको नुकसान पहुंचाने वाले और बिना अनुमति के किए गए अनुरोधों से सुरक्षा मिलती है. इससे आपकी बिलिंग को बिना अनुमति के लगाए गए शुल्क से भी सुरक्षा मिलती है. App Check, आपके फ़्लीट ऐप्लिकेशन के नेटवर्क में रीयल-टाइम में रुकावट की रिपोर्टिंग को भी बेहतर बनाता है. इससे आपके ऐप्लिकेशन का इस्तेमाल करने वाले सभी ड्राइवर को फ़ायदा मिलता है. ज़्यादा जानकारी के लिए, रुकावट की रिपोर्टिंग देखें.

App Check का इस्तेमाल क्यों करना चाहिए?

App Check, Navigation SDK for Android के दो अलग-अलग हिस्सों को सुरक्षित रखता है: मुख्य नेविगेशन फ़ंक्शन और रुकावट की रिपोर्टिंग.

App Check, नुकसान पहुंचाने वाले या बिना अनुमति वाले सोर्स से Android के लिए Navigation SDK के मुख्य अनुरोधों को ब्लॉक करने में मदद करता है. इससे आपको सीधे तौर पर फ़ायदा मिलता है. इससे आपके प्रोजेक्ट को बिलिंग की धोखाधड़ी और कोटा खत्म होने से बचाया जा सकता है.

रुकावटों की शिकायत करना

अगर आपके ऐप्लिकेशन में रीयल-टाइम में रुकावट की शिकायत करने और वोटिंग करने की सुविधाएं हैं, तो हमारा सुझाव है कि आप App Check का इस्तेमाल करें. App Check को चालू करने से, यह पक्का किया जाता है कि आपके ड्राइवर को सबसे सटीक रास्ते उपलब्ध कराए जाएं. इसके लिए, रीयल-टाइम में मिलने वाले सभी सुझावों को ध्यान में रखा जाता है.

रिपोर्टिंग के लिए App Check क्यों ज़रूरी है:

  • सड़क बंद होने की जानकारी के लिए, भरोसे का हाई बार: रास्ते पर असर डालने वाले इवेंट, जैसे कि सड़क बंद होना, सभी ड्राइवर के लिए रास्ते के व्यवहार में काफ़ी बदलाव कर सकते हैं. सड़क बंद होने की वजह से होने वाली रुकावटों के लिए, Google का मॉडरेशन इंफ़्रास्ट्रक्चर, डिवाइस और ऐप इंटेग्रिटी के मज़बूत सिग्नल पर भरोसा करता है. इससे मैप को संभावित बर्बरता, स्पैम या गलत रिपोर्टिंग से बचाया जा सकता है.
  • App Check, रिपोर्ट की पुष्टि कैसे करता है: Navigation SDK for Android से भेजी गई उपयोगकर्ता की रिपोर्ट और वोट में, App Check टोकन शामिल होता है. इसका इस्तेमाल, Google का बैकएंड, सुझाव, शिकायत या राय की वैधता की पुष्टि करने के लिए करता है. इससे भरोसे का लेवल बढ़ता है और लाइव मैप पर पड़ने वाले असर का आकलन किया जा सकता है.
  • App Check को शामिल न करने का असर: App Check के मान्य टोकन के बिना सबमिट की गई रिपोर्ट का आकलन, कम भरोसेमंद मॉडल के तहत किया जाता है. साथ ही, उन्हें सिर्फ़ साइलेंट सिग्नल के तौर पर प्रोसेस किया जा सकता है. इसका मतलब है कि आपके उपयोगकर्ता अब भी रिपोर्ट कर सकते हैं और वोट दे सकते हैं. हालांकि, उनकी रिपोर्ट मैप पर दिखने या अन्य ड्राइवरों के रास्तों पर असर डालने की संभावना कम है. साथ ही, उनकी रिपोर्ट की पुष्टि करने के लिए अतिरिक्त जानकारी की ज़रूरत होगी.

क्या App Check मेरे लिए सही है?

ज़्यादातर मामलों में, App Check का इस्तेमाल करने का सुझाव दिया जाता है. हालांकि, इन मामलों में App Check की ज़रूरत नहीं होती या यह काम नहीं करता:

  • निजी या एक्सपेरिमेंट के तौर पर बनाए गए ऐप्लिकेशन: अगर आपका ऐप्लिकेशन सार्वजनिक तौर पर उपलब्ध नहीं है, तो App Check की ज़रूरत नहीं है.
  • छेड़छाड़ किए गए डिवाइस: अटेस्टेशन की सेवा देने वाली सुझाई गई कंपनियां, Navigation SDK for Android को ऐसे डिवाइसों पर चलने से रोकती हैं जिन पर भरोसा नहीं किया जा सकता. जैसे, रूट किए गए या जेलब्रेक किए गए फ़ोन. इन डिवाइसों पर पुष्टि की सुविधा इस्तेमाल करने के लिए, पुष्टि करने की सुविधा देने वाली कोई कस्टम कंपनी डिप्लॉय करें.
  • बिना GMS वाले Android डिवाइस: Play Integrity का इस्तेमाल करने के लिए, Android डिवाइसों पर Google Mobile Services (GMS) का होना ज़रूरी है. अगर आपको GMS के बिना काम करने वाले Android डिवाइसों पर यह सुविधा देनी है, तो पुष्टि करने वाली कस्टम सेवा डिप्लॉय करें.

लागू करने के चरणों की खास जानकारी

अपने ऐप्लिकेशन को App Check के साथ इंटिग्रेट करने के लिए, आपको यह तरीका अपनाना होगा:

  1. अपने ऐप्लिकेशन में Firebase जोड़ें.
  2. App Check लाइब्रेरी जोड़ें और App Check को शुरू करें.
  3. टोकन की सेवा देने वाली कंपनी की जानकारी जोड़ें. इस चरण में, डिवाइस या ऐप्लिकेशन की इंटेग्रिटी की पुष्टि करने के लिए, आपकी पसंद के अटेस्टेशन प्रोवाइडर को कॉल किया जाता है.
  4. Navigation और App Check API को शुरू करें.
  5. डीबग करने की सुविधा चालू करें. यह डेवलपमेंट के दौरान या लगातार इंटिग्रेशन (सीआई) वाले एनवायरमेंट में काम आता है.
  6. नीति उल्लंघन ठीक करने का तरीका चालू करने से पहले, अपने ऐप्लिकेशन के अनुरोधों पर नज़र रखें. इस तरह, उपयोगकर्ताओं को बिना किसी रुकावट के App Check को आसानी से लागू किया जा सकता है.

App Check इंटिग्रेशन की प्लानिंग करते समय इन बातों का ध्यान रखना ज़रूरी है

  • अटेस्टेशन की सेवा देने वाली कंपनी के लिए कोटा: हम अटेस्टेशन की सेवा देने वाली कंपनी के तौर पर, Play Integrity का सुझाव देते हैं. इसके स्टैंडर्ड एपीआई इस्तेमाल करने के टीयर के लिए, हर दिन कॉल करने की सीमा तय होती है. कॉल की सीमाओं के बारे में ज़्यादा जानने के लिए, Google Play Integrity के डेवलपर दस्तावेज़ में सेटअप पेज देखें.
  • स्टार्टअप लेटेंसी: ज़्यादातर मामलों में, आपके उपयोगकर्ताओं को सामान्य इस्तेमाल के दौरान लेटेंसी का अनुभव नहीं होगा. ऐसा इसलिए, क्योंकि App Check टोकन डिवाइस पर कैश मेमोरी में सेव होते हैं. सिस्टम, App Check टोकन की समयसीमा खत्म होने से पहले, उन्हें बैकग्राउंड में अपने-आप रीफ़्रेश कर देता है. इससे ऐप्लिकेशन की परफ़ॉर्मेंस बेहतर बनी रहती है. हालांकि, अगर कोई मान्य App Check टोकन मौजूद नहीं है, तो आपके ऐप्लिकेशन के उपयोगकर्ताओं को ऐप्लिकेशन शुरू होने में कुछ समय लग सकता है. उदाहरण के लिए, यह इंतज़ार का समय तब होता है, जब कैश मेमोरी में सेव किया गया टोकन खत्म हो जाता है या मौजूद नहीं होता है.
  • टोकन टीटीएल: टाइम टू लिव (टीटीएल) से यह तय होता है कि App Check टोकन कितने समय तक मान्य रहेगा. इसके बाद, इसे रीफ़्रेश करना होगा. Firebase कंसोल में जाकर, इस अवधि को 30 मिनट से लेकर सात दिनों तक के लिए कॉन्फ़िगर किया जा सकता है. सुरक्षित बेसलाइन के तौर पर, एक घंटे की अवधि का सुझाव दिया जाता है. हालांकि, एसडीके टूल टीटीएल की अवधि के करीब आधे समय में, बैकग्राउंड में अपने-आप रीफ़्रेश करने की कोशिश करता है. कंसोल से जुड़े सिलसिलेवार निर्देशों के लिए, 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'
}

अपनी ऐप्लिकेशन क्लास या मुख्य गतिविधि में, 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 का इस्तेमाल करके, उन्हें Navigation SDK for Android के नेटवर्क स्टैक को पास करता है:

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()
            }
    }
}

चौथा चरण: Navigation और 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 के डीबग प्रोवाइडर का इस्तेमाल करता है.

  1. अपने ऐप्लिकेशन की build.gradle फ़ाइल में, डीबग प्रोवाइडर की डिपेंडेंसी जोड़ें:

    Groovy (build.gradle)

    dependencies {
        implementation 'com.google.firebase:firebase-appcheck-debug'
    }
  2. अपने डीबग बिल्ड में डीबग प्रोवाइडर फ़ैक्ट्री का इस्तेमाल करने के लिए, 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(),
        )
    }
  3. अपने ऐप्लिकेशन को किसी एम्युलेटर या डीबग डिवाइस पर लॉन्च करें. App Check, आपके logcat आउटपुट में एक लोकल डीबग टोकन प्रिंट करेगा.
  4. इस डीबग टोकन को कॉपी करें और Firebase कंसोल में रजिस्टर करें. ज़्यादा जानकारी के लिए, Firebase App Check के डीबग प्रोवाइडर से जुड़ा दस्तावेज़ देखें.

छठा चरण: अपने ऐप्लिकेशन के अनुरोधों पर नज़र रखना और नीति उल्लंघन ठीक करने का तरीका तय करना

नीति उल्लंघन ठीक करने का तरीका चालू करने से पहले, अपने ऐप्लिकेशन के अनुरोधों पर नज़र रखें. इससे यह पक्का किया जा सकेगा कि सही उपयोगकर्ताओं को कोई परेशानी न हो.

  1. Firebase कंसोल में App Check मेट्रिक स्क्रीन पर जाकर, पुष्टि किए गए और पुष्टि नहीं किए गए ट्रैफ़िक का प्रतिशत देखें.
  2. जब आपको यह भरोसा हो जाए कि आपके ज़्यादातर ट्रैफ़िक की पुष्टि हो गई है और असली उपयोगकर्ताओं ने आपके ऐप्लिकेशन के उस वर्शन को अपडेट कर लिया है जिसमें App Check लागू किया गया है, तो नीति उल्लंघन ठीक करने का तरीका चालू करें.
  3. नीति उल्लंघन ठीक करने का तरीका चालू होने के बाद, App Check ऐसे सभी ट्रैफ़िक को अस्वीकार कर देगा जिसके पास मान्य App Check टोकन नहीं है.