Catch up on highlights from Firebase at Google I/O 2023. Learn more

احمِ الموارد بخلاف 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);
                        // ...
                    }
                });
    }
}

إعادة الحماية (تجريبي)

عند تقديم طلب إلى نقطة نهاية قمت بتمكين حماية إعادة التشغيل لها ، قم بلف الطلب في مكالمة إلى getLimitedUseAppCheckToken() بدلاً من getAppCheckToken() :

Kotlin+KTX

FirebaseAppCheck.getInstance()
    .getLimitedUseAppCheckToken()
    .addOnSuccessListener { tokenResponse ->
        // ...
    }

Java

FirebaseAppCheck.getInstance()
    .getLimitedUseAppCheckToken()
    .addOnSuccessListener(/* ... */);