Android पर एक कस्टम प्रदाता के साथ ऐप चेक सक्षम करें

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

यदि आप डिफ़ॉल्ट Play Integrity प्रदाता के साथ App Check का उपयोग करना चाहते हैं, तो Android पर Play Integrity के साथ App Check सक्षम करें देखें।

शुरू करने से पहले

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

अपने मॉड्यूल (ऐप-स्तर) ग्रैडल फ़ाइल (आमतौर पर app/build.gradle ) में, ऐप चेक एंड्रॉइड लाइब्रेरी के लिए निर्भरता की घोषणा करें:

Java

dependencies {
    implementation 'com.google.firebase:firebase-appcheck:16.0.0'
}

Kotlin+KTX

dependencies {
    implementation 'com.google.firebase:firebase-appcheck:16.0.0'
}

2. ऐप चेक इंटरफेस लागू करें

सबसे पहले, आपको ऐसी कक्षाएं बनाने की आवश्यकता है जो AppCheckProvider और AppCheckProviderFactory इंटरफेस को लागू करें।

आपके AppCheckProvider वर्ग में एक getToken() विधि होनी चाहिए, जो आपके कस्टम ऐप चेक प्रदाता को प्रामाणिकता के प्रमाण के रूप में आवश्यक सभी जानकारी एकत्र करती है, और ऐप चेक टोकन के बदले में इसे आपकी टोकन अधिग्रहण सेवा में भेजती है। ऐप चेक एसडीके टोकन कैशिंग को संभालता है, इसलिए getToken() के अपने कार्यान्वयन में हमेशा एक नया टोकन प्राप्त करें।

Java

public class YourCustomAppCheckToken extends AppCheckToken {
    private String token;
    private long expiration;

    YourCustomAppCheckToken(String token, long expiration) {
        this.token = token;
        this.expiration = expiration;
    }

    @NonNull
    @Override
    public String getToken() {
        return token;
    }

    @Override
    public long getExpireTimeMillis() {
        return expiration;
    }
}

public class YourCustomAppCheckProvider implements AppCheckProvider {
    @Override
    public Task<AppCheckToken> getToken() {
        // Logic to exchange proof of authenticity for an App Check token and
        //   expiration time.
        // ...

        // Refresh the token early to handle clock skew.
        long expMillis = expirationFromServer * 1000 - 60000;

        // Create AppCheckToken object.
        AppCheckToken appCheckToken =
                YourCustomAppCheckToken(tokenFromServer, expMillis);

        return appCheckToken;
    }
}

Kotlin+KTX

class YourCustomAppCheckToken(
    private val token: String,
    private val expiration: Long
) : AppCheckToken() {
    override fun getToken(): String {
        return token
    }

    override fun getExpireTimeMillis(): Long {
        return expiration
    }
}

class YourCustomAppCheckProvider : AppCheckProvider {
    val token: Task<AppCheckToken>
        get() {
            // Logic to exchange proof of authenticity for an App Check token.
            // ...

            // Refresh the token early to handle clock skew.
            val expMillis: Long = expirationFromServer * 1000 - 60000

            // Create AppCheckToken object.
            val appCheckToken: AppCheckToken =
                    YourCustomAppCheckToken(tokenFromServer, expMillis)

            return appCheckToken!
        }
}

साथ ही, एक AppCheckProviderFactory वर्ग लागू करें जो आपके AppCheckProvider कार्यान्वयन के उदाहरण बनाता है:

Java

public class YourCustomAppCheckProviderFactory implements AppCheckProviderFactory {
  @Override
  public AppCheckProvider create(FirebaseApp firebaseApp) {
    // Create and return an AppCheckProvider object.
    return new YourCustomAppCheckProvider(firebaseApp);
  }
}

Kotlin+KTX

class YourCustomAppCheckProviderFactory : AppCheckProviderFactory {
    fun create(firebaseApp: FirebaseApp): AppCheckProvider {
        // Create and return an AppCheckProvider object.
        return YourCustomAppCheckProvider(firebaseApp)
    }
}

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

अपने ऐप में निम्नलिखित इनिशियलाइज़ेशन कोड जोड़ें ताकि यह आपके द्वारा किसी अन्य Firebase SDK का उपयोग करने से पहले चले:

Java

FirebaseApp.initializeApp(/*context=*/ this);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
    YourCustomAppCheckProviderFactory.getInstance());

Kotlin+KTX

FirebaseApp.initializeApp(/*context=*/ this)
val firebaseAppCheck = FirebaseAppCheck.getInstance()
firebaseAppCheck.installAppCheckProviderFactory(
    YourCustomAppCheckProviderFactory.getInstance())

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

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

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

अब जब आपका अपडेट किया गया ऐप उपयोगकर्ताओं के हाथ में है, तो आप अपने द्वारा उपयोग किए जाने वाले 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 फ़ील्ड का उपयोग करके मीट्रिक को लेबल करें

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

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

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

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

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

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

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

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

बादल कार्य

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