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

আপনার অ্যাপের জন্য নন-গুগল কাস্টম ব্যাকএন্ড রিসোর্স, যেমন আপনার নিজস্ব স্ব-হোস্টেড ব্যাকএন্ড, সুরক্ষিত রাখতে আপনি App Check ব্যবহার করতে পারেন। এটি করার জন্য, আপনাকে নিম্নলিখিত দুটি কাজ করতে হবে:

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

শুরু করার আগে

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

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

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

একবার আপনার কাছে একটি বৈধ টোকেন হয়ে গেলে, অনুরোধের সাথে এটি আপনার ব্যাকএন্ডে পাঠান। আপনি কীভাবে এটি সম্পন্ন করবেন তার সুনির্দিষ্ট বিবরণ আপনার উপর নির্ভর করে, তবে URL গুলির অংশ হিসাবে App Check টোকেনগুলি পাঠাবেন না , কোয়েরি প্যারামিটার সহ, কারণ এটি তাদের দুর্ঘটনাজনিত লিকেজ এবং বাধা দেওয়ার ঝুঁকিপূর্ণ করে তোলে। প্রস্তাবিত পদ্ধতি হল একটি কাস্টম HTTP হেডারে টোকেনটি পাঠানো।

উদাহরণস্বরূপ, যদি আপনি রেট্রোফিট ব্যবহার করেন:

Kotlin

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() getAppCheckToken() এ কল করুন:

Kotlin

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

Java

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