एंड्रॉइड पर ऐप चेक के साथ गैर-फ़ायरबेस संसाधनों को सुरक्षित रखें

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

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

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

डिफ़ॉल्ट प्ले इंटीग्रिटी प्रदाता या कस्टम प्रदाता का उपयोग करके, अपने ऐप में ऐप चेक जोड़ें।

बैकएंड अनुरोधों के साथ ऐप चेक टोकन भेजें

यह सुनिश्चित करने के लिए कि आपके बैकएंड अनुरोधों में एक वैध, असमाप्त, ऐप चेक टोकन शामिल है, प्रत्येक अनुरोध को getAppCheckToken() पर कॉल में लपेटें। यदि आवश्यक हो तो ऐप चेक लाइब्रेरी टोकन को रीफ्रेश करेगी, और आप विधि के सफलता श्रोता में टोकन तक पहुंच सकते हैं।

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

उदाहरण के लिए, यदि आप रेट्रोफ़िट का उपयोग करते हैं:

Kotlin+KTX

class ApiWithAppCheckExample {
    interface YourExampleBackendService {
        @GET("yourExampleEndpoint")
        fun exampleData(
            @Header("X-Firebase-AppCheck") appCheckToken: String,
        ): Call<List<String>>
    }

    var yourExampleBackendService: YourExampleBackendService = Retrofit.Builder()
        .baseUrl("https://yourbackend.example.com/")
        .build()
        .create(YourExampleBackendService::class.java)

    fun callApiExample() {
        Firebase.appCheck.getAppCheckToken(false).addOnSuccessListener { appCheckToken ->
            val token = appCheckToken.token
            val apiCall = yourExampleBackendService.exampleData(token)
            // ...
        }
    }
}

Java

public class ApiWithAppCheckExample {
    private interface YourExampleBackendService {
        @GET("yourExampleEndpoint")
        Call<List<String>> exampleData(
                @Header("X-Firebase-AppCheck") String appCheckToken);
    }

    YourExampleBackendService yourExampleBackendService = new Retrofit.Builder()
            .baseUrl("https://yourbackend.example.com/")
            .build()
            .create(YourExampleBackendService.class);

    public void callApiExample() {
        FirebaseAppCheck.getInstance()
                .getAppCheckToken(false)
                .addOnSuccessListener(new OnSuccessListener<AppCheckToken>() {
                    @Override
                    public void onSuccess(@NonNull AppCheckToken appCheckToken) {
                        String token = appCheckToken.getToken();
                        Call<List<String>> apiCall =
                                yourExampleBackendService.exampleData(token);
                        // ...
                    }
                });
    }
}

रीप्ले सुरक्षा (बीटा)

किसी एंडपॉइंट के लिए अनुरोध करते समय जिसके लिए आपने रीप्ले सुरक्षा सक्षम की है, अनुरोध को getLimitedUseAppCheckToken() के बजाय getAppCheckToken() पर कॉल में लपेटें:

Kotlin+KTX

Firebase.appCheck.limitedUseAppCheckToken.addOnSuccessListener {
    // ...
}

Java

FirebaseAppCheck.getInstance()
        .getLimitedUseAppCheckToken().addOnSuccessListener(
                new OnSuccessListener<AppCheckToken>() {
                    @Override
                    public void onSuccess(AppCheckToken appCheckToken) {
                        String token = appCheckToken.getToken();
                        // ...
                    }
                }
        );