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

আপনি আপনার অ্যাপের জন্য গুগল-বহির্ভূত কাস্টম ব্যাকএন্ড রিসোর্স, যেমন আপনার নিজস্ব সেলফ-হোস্টেড ব্যাকএন্ড, সুরক্ষিত করতে 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();
                        // ...
                    }
                }
        );