Firebase is back at Google I/O on May 10! Register now

احمِ الموارد بخلاف Firebase باستخدام التحقق من التطبيق على Android

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

يمكنك حماية موارد تطبيقك بخلاف Firebase ، مثل الخلفيات المستضافة ذاتيًا ، باستخدام App Check. للقيام بذلك ، سوف تحتاج إلى القيام بالأمرين التاليين:

  • قم بتعديل عميل التطبيق الخاص بك لإرسال رمز التحقق من التطبيق جنبًا إلى جنب مع كل طلب إلى الواجهة الخلفية ، كما هو موضح في هذه الصفحة.
  • قم بتعديل الواجهة الخلفية للمطالبة برمز مميز صالح للتحقق من التطبيق مع كل طلب ، كما هو موضح في Verify App Check tokens من خلفية مخصصة .

قبل ان تبدأ

أضف App Check إلى تطبيقك ، إما باستخدام مزود Play Integrity الافتراضي ، أو مزود مخصص .

إرسال رموز التحقق من التطبيق مع طلبات الخلفية

للتأكد من أن طلبات الواجهة الخلفية الخاصة بك تتضمن رمزًا مميزًا صالحًا وغير منتهي الصلاحية للتحقق من التطبيق ، قم بلف كل طلب في مكالمة إلى getAppCheckToken() . ستقوم مكتبة App Check بتحديث الرمز المميز إذا لزم الأمر ، ويمكنك الوصول إلى الرمز المميز في مستمع نجاح الطريقة.

بمجرد حصولك على رمز صالح ، أرسله مع الطلب إلى الواجهة الخلفية الخاصة بك. تعود تفاصيل كيفية تحقيق ذلك إليك ، ولكن لا ترسل رموز التحقق من التطبيق كجزء من عناوين URL ، بما في ذلك في معلمات الاستعلام ، لأن هذا يجعلها عرضة للتسرب والاعتراض العرضي. الطريقة الموصى بها هي إرسال الرمز المميز في رأس 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() {
        FirebaseAppCheck.getInstance()
            .getAppCheckToken(false)
            .addOnSuccessListener { tokenResponse ->
                val appCheckToken = tokenResponse.token
                val apiCall = yourExampleBackendService.exampleData(appCheckToken)
                // ...
            }
    }
}

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 tokenResponse) {
                        String appCheckToken = tokenResponse.getToken();
                        Call<List<String>> apiCall =
                                yourExampleBackendService.exampleData(appCheckToken);
                        // ...
                    }
                });
    }
}
و

يمكنك حماية موارد تطبيقك بخلاف Firebase ، مثل الخلفيات المستضافة ذاتيًا ، باستخدام App Check. للقيام بذلك ، سوف تحتاج إلى القيام بالأمرين التاليين:

  • قم بتعديل عميل التطبيق الخاص بك لإرسال رمز التحقق من التطبيق جنبًا إلى جنب مع كل طلب إلى الواجهة الخلفية ، كما هو موضح في هذه الصفحة.
  • قم بتعديل الواجهة الخلفية للمطالبة برمز مميز صالح للتحقق من التطبيق مع كل طلب ، كما هو موضح في Verify App Check tokens من خلفية مخصصة .

قبل ان تبدأ

أضف App Check إلى تطبيقك ، إما باستخدام مزود Play Integrity الافتراضي ، أو مزود مخصص .

إرسال رموز التحقق من التطبيق مع طلبات الخلفية

للتأكد من أن طلبات الواجهة الخلفية الخاصة بك تتضمن رمزًا مميزًا صالحًا وغير منتهي الصلاحية للتحقق من التطبيق ، قم بلف كل طلب في مكالمة إلى getAppCheckToken() . ستقوم مكتبة App Check بتحديث الرمز المميز إذا لزم الأمر ، ويمكنك الوصول إلى الرمز المميز في مستمع نجاح الطريقة.

بمجرد حصولك على رمز صالح ، أرسله مع الطلب إلى الواجهة الخلفية الخاصة بك. تعود تفاصيل كيفية تحقيق ذلك إليك ، ولكن لا ترسل رموز التحقق من التطبيق كجزء من عناوين URL ، بما في ذلك في معلمات الاستعلام ، لأن هذا يجعلها عرضة للتسرب والاعتراض العرضي. الطريقة الموصى بها هي إرسال الرمز المميز في رأس 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() {
        FirebaseAppCheck.getInstance()
            .getAppCheckToken(false)
            .addOnSuccessListener { tokenResponse ->
                val appCheckToken = tokenResponse.token
                val apiCall = yourExampleBackendService.exampleData(appCheckToken)
                // ...
            }
    }
}

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 tokenResponse) {
                        String appCheckToken = tokenResponse.getToken();
                        Call<List<String>> apiCall =
                                yourExampleBackendService.exampleData(appCheckToken);
                        // ...
                    }
                });
    }
}