ऐपल प्लेटफॉर्म पर ऐप अटेस्ट के साथ ऐप चेक इनेबल करें

यह पेज आपको दिखाता है कि बिल्ट-इन ऐप अटेस्ट प्रदाता का उपयोग करके ऐप्पल ऐप में ऐप चेक को कैसे सक्षम किया जाए। जब आप ऐप चेक सक्षम करते हैं, तो आप यह सुनिश्चित करने में सहायता करते हैं कि केवल आपका ऐप ही आपके प्रोजेक्ट के फायरबेस संसाधनों तक पहुंच सकता है। इस सुविधा का अवलोकन देखें।

ऐप चेक यह सत्यापित करने के लिए ऐप अटेस्ट का उपयोग करता है कि फायरबेस सेवाओं के लिए अनुरोध आपके प्रामाणिक ऐप से आ रहे हैं। ऐप चेक वर्तमान में धोखाधड़ी के जोखिम का विश्लेषण करने के लिए ऐप अटेस्ट का उपयोग नहीं करता है।

यदि आप अपने स्वयं के कस्टम प्रदाता के साथ ऐप चेक का उपयोग करना चाहते हैं, तो कस्टम ऐप चेक प्रदाता लागू करें देखें

1. अपना फायरबेस प्रोजेक्ट सेट करें

  1. App Attest का उपयोग करने के लिए आपको Xcode 12.5+ की आवश्यकता होगी।

  2. यदि आपने पहले से ऐसा नहीं किया है, तो अपने Apple प्रोजेक्ट में Firebase जोड़ें

  3. ऐप चेक का उपयोग करने के लिए अपने ऐप को फ़ायरबेस कंसोल के ऐप चेक सेक्शन में ऐप अटेस्ट प्रोवाइडर के साथ रजिस्टर करें।

    आपको आमतौर पर अपने सभी प्रोजेक्ट के ऐप्स को पंजीकृत करने की आवश्यकता होती है, क्योंकि एक बार जब आप किसी Firebase उत्पाद के लिए प्रवर्तन सक्षम कर देते हैं, तो केवल पंजीकृत ऐप्स ही उत्पाद के बैकएंड संसाधनों तक पहुंच पाएंगे।

  4. वैकल्पिक : ऐप पंजीकरण सेटिंग में, प्रदाता द्वारा जारी किए गए ऐप चेक टोकन के लिए कस्टम टाइम-टू-लाइव (टीटीएल) सेट करें। आप टीटीएल को 30 मिनट और 7 दिनों के बीच किसी भी मान पर सेट कर सकते हैं। इस मान को बदलते समय, निम्नलिखित ट्रेडऑफ़ से अवगत रहें:

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

    अधिकांश ऐप्स के लिए 1 घंटे का डिफ़ॉल्ट टीटीएल उचित है। ध्यान दें कि ऐप चेक लाइब्रेरी टीटीएल की लगभग आधी अवधि में टोकन को रीफ्रेश करती है।

2. ऐप चेक लाइब्रेरी को अपने ऐप में जोड़ें

  1. अपने प्रोजेक्ट के Podfile में ऐप चेक के लिए निर्भरता जोड़ें:

    pod 'FirebaseAppCheck'

    या, वैकल्पिक रूप से, आप इसके बजाय स्विफ्ट पैकेज मैनेजर का उपयोग कर सकते हैं।

    सुनिश्चित करें कि आप किसी अन्य Firebase SDK के नवीनतम संस्करण का भी उपयोग कर रहे हैं, जिस पर आप निर्भर हैं।

  2. pod install चलाएँ और बनाई गई .xcworkspace फ़ाइल खोलें।

  3. Xcode में, अपने ऐप में ऐप अटेस्ट क्षमता जोड़ें।

  4. अपने प्रोजेक्ट की .entitlements फ़ाइल में, App Attest परिवेश को production पर सेट करें।

3. ऐप चेक इनिशियलाइज़ करें

किसी अन्य Firebase SDK का उपयोग करने से पहले आपको ऐप चेक इनिशियलाइज़ करना होगा।

सबसे पहले, AppCheckProviderFactory का कार्यान्वयन लिखें। आपके कार्यान्वयन की विशिष्टता आपके उपयोग के मामले पर निर्भर करेगी।

उदाहरण के लिए, यदि आपके पास केवल iOS 14 और उसके बाद के उपयोगकर्ता हैं, तो आप हमेशा AppAttestProvider ऑब्जेक्ट बना सकते हैं:

तीव्र

नोट: यह Firebase उत्पाद watchOS लक्ष्यों पर उपलब्ध नहीं है।

class YourSimpleAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    return AppAttestProvider(app: app)
  }
}

उद्देश्य सी

नोट: यह Firebase उत्पाद watchOS लक्ष्यों पर उपलब्ध नहीं है।

@interface YourSimpleAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourSimpleAppCheckProviderFactory

- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(nonnull FIRApp *)app {
  return [[FIRAppAttestProvider alloc] initWithApp:app];
}

@end

या, आप iOS 14 और बाद के संस्करणों पर AppAttestProvider ऑब्जेक्ट बना सकते हैं, और पुराने संस्करणों पर DeviceCheckProvider पर वापस आ सकते हैं:

तीव्र

नोट: यह Firebase उत्पाद watchOS लक्ष्यों पर उपलब्ध नहीं है।

class YourAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    if #available(iOS 14.0, *) {
      return AppAttestProvider(app: app)
    } else {
      return DeviceCheckProvider(app: app)
    }
  }
}

उद्देश्य सी

नोट: यह Firebase उत्पाद watchOS लक्ष्यों पर उपलब्ध नहीं है।

@interface YourAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end

@implementation YourAppCheckProviderFactory

- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(nonnull FIRApp *)app {
  if (@available(iOS 14.0, *)) {
    return [[FIRAppAttestProvider alloc] initWithApp:app];
  } else {
    return [[FIRDeviceCheckProvider alloc] initWithApp:app];
  }
}

@end

आपके द्वारा AppCheckProviderFactory क्लास लागू करने के बाद, ऐप चेक को इसका उपयोग करने के लिए कॉन्फ़िगर करें:

तीव्र

नोट: यह Firebase उत्पाद watchOS लक्ष्यों पर उपलब्ध नहीं है।

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

FirebaseApp.configure()

उद्देश्य सी

नोट: यह Firebase उत्पाद watchOS लक्ष्यों पर उपलब्ध नहीं है।

YourAppCheckProviderFactory *providerFactory =
        [[YourAppCheckProviderFactory alloc] init];
[FIRAppCheck setAppCheckProviderFactory:providerFactory];

[FIRApp configure];

एक बार जब आपके ऐप में ऐप चेक लाइब्रेरी इंस्टॉल हो जाए, तो अपडेट किए गए ऐप को अपने उपयोगकर्ताओं को वितरित करना शुरू करें।

अपडेट किया गया क्लाइंट ऐप, Firebase को किए जाने वाले हर अनुरोध के साथ ऐप चेक टोकन भेजना शुरू कर देगा, लेकिन जब तक आप Firebase कंसोल के ऐप चेक सेक्शन में प्रवर्तन को सक्षम नहीं करते, तब तक Firebase उत्पादों को टोकन के मान्य होने की आवश्यकता नहीं होगी। विवरण के लिए अगले दो खंड देखें।

5. मॉनिटर अनुरोध मेट्रिक्स

अब जब आपका अपडेट किया गया ऐप उपयोगकर्ताओं के हाथ में है, तो आप अपने द्वारा उपयोग किए जाने वाले Firebase उत्पादों के लिए ऐप चेक को लागू करना सक्षम कर सकते हैं। हालांकि, ऐसा करने से पहले, आपको यह सुनिश्चित कर लेना चाहिए कि ऐसा करने से आपके मौजूदा वैध उपयोगकर्ता बाधित नहीं होंगे।

रीयलटाइम डेटाबेस, क्लाउड फायरस्टोर, और क्लाउड स्टोरेज

रीयलटाइम डेटाबेस, क्लाउड फायरस्टोर और क्लाउड स्टोरेज के लिए यह निर्णय लेने के लिए आप जिस महत्वपूर्ण टूल का उपयोग कर सकते हैं, वह ऐप चेक अनुरोध मेट्रिक्स स्क्रीन है।

किसी उत्पाद के लिए ऐप चेक अनुरोध मीट्रिक देखने के लिए, फायरबेस कंसोल का ऐप चेक अनुभाग खोलें। उदाहरण के लिए:

ऐप चेक मेट्रिक्स पेज का स्क्रीनशॉट

प्रत्येक उत्पाद के लिए अनुरोध मीट्रिक चार श्रेणियों में विभाजित हैं:

  • सत्यापित अनुरोध वे हैं जिनके पास वैध ऐप चेक टोकन है। आपके द्वारा ऐप चेक प्रवर्तन सक्षम करने के बाद, केवल इस श्रेणी के अनुरोध ही सफल होंगे।

  • पुराने क्लाइंट अनुरोध वे हैं जिनमें ऐप चेक टोकन नहीं है। ऐप में ऐप चेक को शामिल करने से पहले ये अनुरोध फायरबेस एसडीके के पुराने संस्करण से हो सकते हैं।

  • अज्ञात मूल अनुरोध वे हैं जिनमें ऐप चेक टोकन नहीं है, और ऐसा नहीं लगता कि वे फायरबेस एसडीके से आए हैं। ये चोरी की गई API कुंजियों से किए गए अनुरोधों या Firebase SDK के बिना किए गए जाली अनुरोधों से हो सकते हैं।

  • अमान्य अनुरोध वे होते हैं जिनके पास एक अमान्य ऐप चेक टोकन होता है, जो आपके ऐप का प्रतिरूपण करने का प्रयास करने वाले किसी अप्रामाणिक क्लाइंट या नकली वातावरण से हो सकता है।

जब आप प्रवर्तन को सक्षम करने का निर्णय लेते हैं तो आपके ऐप के लिए इन श्रेणियों के वितरण को सूचित करना चाहिए। यहां कुछ दिशानिर्देश दिए गए हैं:

  • यदि हाल के लगभग सभी अनुरोध सत्यापित क्लाइंट से हैं, तो अपने बैकएंड संसाधनों की सुरक्षा शुरू करने के लिए प्रवर्तन को सक्षम करने पर विचार करें।

  • यदि हाल के अनुरोधों का एक महत्वपूर्ण हिस्सा संभावित-पुराने ग्राहकों से है, तो उपयोगकर्ताओं को बाधित करने से बचने के लिए, प्रवर्तन को सक्षम करने से पहले अधिक उपयोगकर्ताओं द्वारा आपके ऐप को अपडेट करने की प्रतीक्षा करने पर विचार करें। जारी किए गए ऐप पर ऐप चेक लागू करने से ऐप चेक एसडीके के साथ एकीकृत नहीं किए गए पिछले ऐप संस्करण टूट जाएंगे।

  • यदि आपका ऐप अभी तक लॉन्च नहीं हुआ है, तो आपको तुरंत ऐप चेक प्रवर्तन सक्षम करना चाहिए, क्योंकि उपयोग में कोई पुराना क्लाइंट नहीं है।

बादल कार्य

क्लाउड फ़ंक्शंस के लिए, आप अपने फ़ंक्शंस के लॉग की जांच करके ऐप चेक मेट्रिक्स प्राप्त कर सकते हैं। कॉल करने योग्य फ़ंक्शन का प्रत्येक आमंत्रण निम्न उदाहरण की तरह एक संरचित लॉग प्रविष्टि का उत्सर्जन करता है:

{
  "severity": "INFO",    // INFO, WARNING, or ERROR
  "logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
  "jsonPayload": {
    "message": "Callable header verifications passed.",
    "verifications": {
      // ...
      "app": "MISSING",  // VALID, INVALID, or MISSING
    }
  }
}

आप निम्न मीट्रिक फ़िल्टर के साथ लॉग-आधारित काउंटर मीट्रिक बनाकर Google क्लाउड कंसोल में इन मीट्रिक का विश्लेषण कर सकते हैं:

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

jsonPayload.verifications.appCheck फ़ील्ड का उपयोग करके मीट्रिक को लेबल करें

6. प्रवर्तन सक्षम करें

प्रवर्तन सक्षम करने के लिए, प्रत्येक उत्पाद के लिए नीचे दिए गए निर्देशों का पालन करें। एक बार जब आप किसी उत्पाद के लिए प्रवर्तन सक्षम कर देते हैं, तो उस उत्पाद के सभी असत्यापित अनुरोध अस्वीकार कर दिए जाएंगे।

रीयलटाइम डेटाबेस, क्लाउड फायरस्टोर, और क्लाउड स्टोरेज

रीयलटाइम डेटाबेस, क्लाउड फायरस्टोर (आईओएस और एंड्रॉइड), और क्लाउड स्टोरेज के लिए प्रवर्तन सक्षम करने के लिए:

  1. Firebase कंसोल का ऐप चेक सेक्शन खोलें।

  2. उस उत्पाद के मेट्रिक दृश्य का विस्तार करें जिसके लिए आप प्रवर्तन सक्षम करना चाहते हैं.

  3. लागू करें पर क्लिक करें और अपनी पसंद की पुष्टि करें।

ध्यान दें कि आपके द्वारा प्रवर्तन को प्रभावी होने में सक्षम करने के बाद इसमें 15 मिनट तक का समय लग सकता है।

बादल कार्य

क्लाउड फ़ंक्शंस के लिए ऐप चेक एनफोर्समेंट सक्षम करें देखें।

अगले कदम

यदि, ऐप चेक के लिए अपना ऐप पंजीकृत करने के बाद, आप अपने ऐप को ऐसे वातावरण में चलाना चाहते हैं, जिसे ऐप चेक सामान्य रूप से मान्य के रूप में वर्गीकृत नहीं करेगा, जैसे कि विकास के दौरान सिम्युलेटर, या निरंतर एकीकरण (सीआई) वातावरण से, आप कर सकते हैं अपने ऐप का डिबग बिल्ड बनाएं जो वास्तविक सत्यापन प्रदाता के बजाय ऐप चेक डिबग प्रदाता का उपयोग करता है।

ऐप्पल प्लेटफ़ॉर्म पर डीबग प्रदाता के साथ ऐप चेक का उपयोग करें देखें।