अपनी एपीआई पासकोड को सुरक्षित रखने के लिए, App Check का इस्तेमाल करना

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

क्या ऐप्लिकेशन की जांच करने की सुविधा मेरे लिए सही है?

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

  • आपने ओरिजनल Places SDK का इस्तेमाल किया हो. 'ऐप्लिकेशन की जांच करें' सुविधा, सिर्फ़ Places SDK (नया) के लिए उपलब्ध है.
  • निजी या प्रयोग के तौर पर इस्तेमाल किए जाने वाले ऐप्लिकेशन. अगर आपका ऐप्लिकेशन सार्वजनिक तौर पर ऐक्सेस नहीं किया जा सकता, तो ऐप्लिकेशन की जांच की ज़रूरत नहीं है.
  • अगर आपके ऐप्लिकेशन का इस्तेमाल सिर्फ़ सर्वर-टू-सर्वर के तौर पर किया जाता है, तो ऐप्लिकेशन की जांच की ज़रूरत नहीं है. हालांकि, अगर GMP के साथ इंटरैक्ट करने वाले सर्वर का इस्तेमाल सार्वजनिक क्लाइंट (जैसे, मोबाइल ऐप्लिकेशन) करते हैं, तो GMP के बजाय उस सर्वर को सुरक्षित रखने के लिए, ऐप्लिकेशन की जांच करने की सुविधा का इस्तेमाल करें.
  • पुष्टि करने वाली सेवा देने वाली उन कंपनियों के साथ, App Check के सुझाए गए पुष्टि करने वाले टूल काम नहीं करेंगे जिन्हें पुष्टि करने वाली सेवा देने वाली कंपनी ने असुरक्षित या भरोसेमंद नहीं माना है. अगर आपको ऐसे डिवाइसों के साथ काम करना है, तो कस्टम पुष्टि करने की सेवा को डिप्लॉय किया जा सकता है. ज़्यादा जानकारी के लिए, निर्देश देखें.

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

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

  1. अपने ऐप्लिकेशन में Firebase जोड़ें.
  2. ऐप्लिकेशन की जांच करने वाली लाइब्रेरी जोड़ें और उसे शुरू करें.
  3. अपने ऐप्लिकेशन में टोकन की सेवा देने वाली कंपनी को जोड़ें.
  4. Places और App Check API को शुरू करें.
  5. डीबग करने की सुविधा चालू करें.
  6. अपने ऐप्लिकेशन के अनुरोधों पर नज़र रखें और नीति उल्लंघन ठीक करने के तरीके पर फ़ैसला लें.

App Check के साथ इंटिग्रेट करने के बाद, आपको Firebase कंसोल पर बैकएंड ट्रैफ़िक मेट्रिक दिखेंगी. इन मेट्रिक से, अनुरोधों के बारे में यह जानकारी मिलती है कि उनमें मान्य App Check टोकन है या नहीं. ज़्यादा जानकारी के लिए, Firebase App Check का दस्तावेज़ देखें.

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

ऐप्लिकेशन की जांच करने की सुविधा को इंटिग्रेट करने से जुड़ी बातें

इंटिग्रेशन की योजना बनाते समय, इन बातों का ध्यान रखें:

  • हम Device Check या App Attest जैसे पुष्टि करने वाले टूल का सुझाव देते हैं. हालांकि, इन पर Apple की तय की गई सीमाएं और कोटा लागू होते हैं.

    आपके पास, अपने हिसाब से पुष्टि करने वाली सेवा देने वाली कंपनी का इस्तेमाल करने का विकल्प होता है. हालांकि, यह इस्तेमाल का एक बेहतर उदाहरण है. ज़्यादा जानकारी के लिए, Firebase App Check का दस्तावेज़ देखें.

  • आपके ऐप्लिकेशन के उपयोगकर्ताओं को स्टार्टअप में कुछ देरी का अनुभव होगा. हालांकि, इसके बाद, समय-समय पर फिर से पुष्टि करने की प्रोसेस बैकग्राउंड में होगी और उपयोगकर्ताओं को इंतज़ार नहीं करना पड़ेगा. स्टार्टअप में लगने वाला कुल समय, पुष्टि करने वाली कंपनी पर निर्भर करता है.

    App Check टोकन के मान्य होने की अवधि (टाइम टू लाइव या टीटीएल) से यह तय होता है कि फिर से पुष्टि कितनी बार की जानी चाहिए. इस अवधि को Firebase कंसोल में कॉन्फ़िगर किया जा सकता है. टीटीएल (समयसीमा) के आधे बीत जाने पर, फिर से पुष्टि की जाती है. ज़्यादा जानकारी के लिए, पुष्टि करने वाली कंपनी के Firebase दस्तावेज़ देखें.

अपने ऐप्लिकेशन को App Check के साथ इंटिग्रेट करना

ज़रूरी शर्तें

  • Places SDK टूल का 9.2 या उसके बाद का वर्शन इंस्टॉल किया गया हो.
  • ऐप्लिकेशन का बंडल आईडी.
  • Apple Member Center में, सदस्यता सेक्शन में जाकर अपना टीम आईडी देखें.
  • अगर आपको डिवाइस की जांच करने की सुविधा का इस्तेमाल करना है, तो निजी कुंजी की फ़ाइल और कुंजी आईडी.
  • यह ज़रूरी है कि आपके पास Cloud Console में ऐप्लिकेशन का मालिकाना हक हो.
  • आपको Cloud Console से ऐप्लिकेशन का प्रोजेक्ट आईडी चाहिए होगा

पहला चरण: अपने ऐप्लिकेशन में Firebase जोड़ना

अपने ऐप्लिकेशन में Firebase जोड़ने के लिए, Firebase डेवलपर दस्तावेज़ में दिए गए निर्देशों का पालन करें.

ऐप्लिकेशन रजिस्टर करने पर, आपको एक कॉन्फ़िगरेशन फ़ाइल, GoogleService-Info.plist मिलेगी. इस फ़ाइल को बिना किसी बदलाव के, अपने ऐप्लिकेशन के रूट लेवल पर जोड़ें.

Swift

import FirebaseCore
import FirebaseAppCheck
import GooglePlaces

Objective-C

@import FirebaseCore;      
@import FirebaseAppCheck;
@import GooglePlaces;

दूसरा चरण: App Check लाइब्रेरी जोड़ना और App Check को शुरू करना

Firebase, पुष्टि करने वाली हर डिफ़ॉल्ट सेवा के लिए निर्देश उपलब्ध कराता है. इन निर्देशों में, Firebase प्रोजेक्ट सेट अप करने और अपने ऐप्लिकेशन में App Check लाइब्रेरी जोड़ने का तरीका बताया गया है. App Check को शुरू करने के लिए, दिए गए कोड सैंपल का पालन करें.

  1. App Check लाइब्रेरी जोड़ने के लिए, Firebase के निर्देशों का पालन करें:
  2. ऐप्लिकेशन की जांच शुरू करें.
    • अगर App Attest का इस्तेमाल किया जा रहा है, तो App Attest के लिए Firebase डेवलपर दस्तावेज़ पढ़ें.

      AppCheckProviderFactory को लागू करने और अपनी AppDelegate फ़ाइल में जोड़ने के लिए, Firebase App Check के निर्देशों का पालन करें.

      Swift

      let providerFactory = YourAppCheckProviderFactory()
      AppCheck.setAppCheckProviderFactory(providerFactory)

      Objective-C

      YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
      [FIRAppCheck setAppCheckProviderFactory:providerFactory];
         
    • अगर डिवाइस की जांच करने की सुविधा का इस्तेमाल किया जा रहा है, तो अपने AppDelegate में ये चीज़ें जोड़ें:

      Swift

      AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())

      Objective-C

      [FIRAppCheck setAppCheckProviderFactory:providerFactory];
            

तीसरा चरण: टोकन प्रोवाइडर जोड़ना

अपने ऐप्लिकेशन के रूट लेवल पर, AppCheckTokenProvider नाम की एक फ़ाइल बनाएं. अगर Objective-C का इस्तेमाल किया जा रहा है, तो AppCheckTokenProvider.h और AppCheckTokenProvider.m नाम की दो फ़ाइलें बनाएं. इन इंपोर्ट स्टेटमेंट और क्लास की परिभाषा जोड़ें:

Swift

// AppCheckTokenProvider.swift

import FirebaseAppCheck
import Foundation
import GooglePlaces

class AppCheckTokenProvider: NSObject, GMSPlacesAppCheckTokenProvider {
  func fetchAppCheckToken() async throws -> String {
    return try await AppCheck.appCheck().token(forcingRefresh: false).token
  }
}

Objective-C

// AppCheckTokenProvider.h

@import Foundation;
@import GooglePlaces;

@interface AppCheckTokenProvider : NSObject <GMSPlacesAppCheckTokenProvider>
@end

// AppCheckTokenProvider.m

#import "AppCheckTokenProvider.h"

@import FirebaseAppCheck;

@implementation AppCheckTokenProvider

- (void)fetchAppCheckTokenWithCompletion:(nonnull GMSAppCheckTokenCompletion)completion {
  [[FIRAppCheck appCheck]
      tokenForcingRefresh:NO
               completion:^(FIRAppCheckToken *_Nullable token, NSError *_Nullable error) {
                 if (token) {
                   completion(token.token, nil);
                 } else {
                   completion(nil, error);
                 }
               }];
}

@end

चौथा चरण: Places और App Check API को शुरू करना

  1. अपनी AppDelegate फ़ाइल में, Places API को शुरू करें:

    Swift

    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

    Objective-C

    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
  2. इसके बाद, App Check API को शुरू करें:

    Swift

    GMSPlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())

    Objective-C

    [GMSPlacesClient setAppCheckTokenProvider:[[AppCheckTokenProvider alloc] init]];

पांचवां चरण: डीबग करने की सुविधा चालू करना (ज़रूरी नहीं)

अगर आपको अपने ऐप्लिकेशन को स्थानीय तौर पर डेवलप और टेस्ट करना है या उसे लगातार इंटिग्रेशन (सीआई) वाले एनवायरमेंट में चलाना है, तो अपने ऐप्लिकेशन का डीबग बिल्ड बनाएं. यह बिल्ड, ऐप्लिकेशन की जांच के लिए मान्य टोकन पाने के लिए, डीबग सीक्रेट का इस्तेमाल करता है. इससे, डीबग बिल्ड में पुष्टि करने वाली सेवा देने वाली असल कंपनियों का इस्तेमाल करने से बचा जा सकता है.

सिम्युलेटर या टेस्ट डिवाइस पर अपने ऐप्लिकेशन की जांच करने के लिए:

  • App Check डीबग प्रोवाइडर फ़ैक्ट्री बनाएं और सेट करें.

    यह कोड सैंपल, डीबगिंग और प्रोडक्शन, दोनों स्थितियों को हैंडल करता है:

    Swift

    #if targetEnvironment(simulator)
          let providerFactory = AppCheckDebugProviderFactory()
    #else
          let providerFactory = YourAppCheckProviderFactory()
    #endif

    Objective-C

    if (targetEnvironment == simulator){
    
    FIRAppCheckDebugProviderFactory *providerFactory =
          [[FIRAppCheckDebugProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
    
    else {
    
    YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
        
  • अपने Xcode प्रोजेक्ट पर लॉगिंग की सुविधा चालू करें, ऐप्लिकेशन लॉन्च करें, और लॉग में लोकल डीबग टोकन ढूंढें.
  • इस टोकन को Firebase कंसोल में जोड़ें.
  • ज़्यादा जानकारी और निर्देशों के लिए, App Check का दस्तावेज़ देखें.

अपने ऐप्लिकेशन को सीआई एनवायरमेंट में चलाने के लिए:

  • Firebase कंसोल में डीबग टोकन बनाएं और उसे अपने सीआई सिस्टम के सुरक्षित पासकोड स्टोर में जोड़ें.
  • Xcode में, अपनी टेस्टिंग स्कीम में एक एनवायरमेंट वैरिएबल जोड़ें. इसके लिए, वैल्यू के तौर पर FIRAAppCheckDebugToken और $(APP_CHECK_DEBUG_TOKEN) (या मिलता-जुलता कोई नाम) का इस्तेमाल करें.
  • अपनी सीआई टेस्ट स्क्रिप्ट में, डीबग टोकन को एनवायरमेंट के तौर पर पास करें
  • App Check डीबग प्रोवाइडर फ़ैक्ट्री बनाएं और सेट करें.

    यह कोड सैंपल, डीबगिंग और प्रोडक्शन, दोनों स्थितियों को हैंडल करता है:

    Swift

      #if targetEnvironment(ci)
            let providerFactory = AppCheckDebugProviderFactory()
            AppCheck.setAppCheckProviderFactory(providerFactory)
      #else
            let providerFactory = YourAppCheckProviderFactory()
      #endif
      

    Objective-C

    if (targetEnvironment == ci) {
    FIRAppCheckDebugProviderFactory *providerFactory =
          [[FIRAppCheckDebugProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
    
    else {
    YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
  • ज़्यादा जानकारी और निर्देशों के लिए, App Check का दस्तावेज़ देखें.

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

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

ज़्यादा जानकारी और निर्देशों के लिए, Firebase App Check का दस्तावेज़ देखें.