Android-এ App Check-এর মাধ্যমে কাস্টম ব্যাকএন্ড রিসোর্স সুরক্ষিত করা

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

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

শুরু করার আগে

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

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

আপনার ব্যাকএন্ড অনুরোধে যাতে সঠিক, মেয়াদ শেষ না হওয়া App Check টোকেন থাকে তা নিশ্চিত করতে, প্রতিটি অনুরোধ getAppCheckToken()-এ কল করার মাধ্যমে র‍্যাপ করুন। প্রয়োজন হলে App Check লাইব্রেরি টোকেন রিফ্রেশ করবে এবং আপনি মেথডের সাকসেস লিসেনারে টোকেন অ্যাক্সেস করতে পারবেন।

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

যেমন, আপনি Retrofit ব্যবহার করলে:

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()-এ কল করে অনুরোধটি র‍্যাপ করুন:

Kotlin

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

Java

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