Android-এ অ্যাপ চেকের মাধ্যমে অ-ফায়ারবেস সংস্থানগুলিকে সুরক্ষিত করুন

আপনি App Check মাধ্যমে আপনার অ্যাপের নন-ফায়ারবেস সংস্থানগুলি যেমন স্ব-হোস্টেড ব্যাকএন্ডগুলি রক্ষা করতে পারেন৷ এটি করার জন্য, আপনাকে নিম্নলিখিত উভয়টি করতে হবে:

  • এই পৃষ্ঠায় বর্ণিত প্রতিটি অনুরোধের সাথে একটি App Check টোকেন পাঠাতে আপনার অ্যাপ ক্লায়েন্টকে পরিবর্তন করুন।
  • একটি কাস্টম ব্যাকএন্ড থেকে ভেরিফাই App Check টোকেন এ বর্ণিত প্রতিটি অনুরোধের সাথে একটি বৈধ App Check টোকেনের প্রয়োজনে আপনার ব্যাকএন্ড পরিবর্তন করুন।

আপনি শুরু করার আগে

ডিফল্ট প্লে ইন্টিগ্রিটি প্রদানকারী বা কাস্টম প্রদানকারী ব্যবহার করে আপনার অ্যাপে App Check যোগ করুন।

ব্যাকএন্ড অনুরোধ সহ App Check টোকেন পাঠান

আপনার ব্যাকএন্ড অনুরোধে একটি বৈধ, মেয়াদোত্তীর্ণ, App Check টোকেন অন্তর্ভুক্ত রয়েছে তা নিশ্চিত করতে, প্রতিটি অনুরোধ getAppCheckToken() এ একটি কলে মুড়ে দিন। App Check লাইব্রেরি প্রয়োজনে টোকেনটি রিফ্রেশ করবে এবং আপনি পদ্ধতির সফল শ্রোতাতে টোকেনটি অ্যাক্সেস করতে পারবেন।

একবার আপনার কাছে একটি বৈধ টোকেন হয়ে গেলে, আপনার ব্যাকএন্ডে অনুরোধ সহ এটি পাঠান। আপনি কীভাবে এটি সম্পন্ন করবেন তার সুনির্দিষ্ট বিষয়গুলি আপনার উপর নির্ভর করে, কিন্তু ক্যোয়ারী প্যারামিটার সহ URL-এর অংশ হিসাবে App Check টোকেনগুলি পাঠাবেন না , কারণ এটি তাদের দুর্ঘটনাজনিত ফাঁস এবং বাধার জন্য ঝুঁকিপূর্ণ করে তোলে৷ প্রস্তাবিত পদ্ধতি হল একটি কাস্টম 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);
                        // ...
                    }
                });
    }
}

রিপ্লে সুরক্ষা (বিটা)

আপনি যখন রিপ্লে সুরক্ষা সক্ষম করেছেন এমন একটি এন্ডপয়েন্টে অনুরোধ করার সময়, getAppCheckToken() ) এর পরিবর্তে getLimitedUseAppCheckToken() এ অনুরোধটি কলে মোড়ানো করুন :

Kotlin+KTX

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

Java

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