يمكنك استخدام App Check لحماية موارد الخلفية المخصّصة غير التابعة لـ Google في تطبيقك، مثل الخلفية المستضافة ذاتيًا. لإجراء ذلك، عليك تنفيذ كلا الإجراءَين التاليَين:
- عدِّل برنامج تطبيقك لإرسال رمز App Check مع كل طلب إلى الخلفية، كما هو موضّح في هذه الصفحة.
- عدِّل الخلفية لطلب رمز مميّز صالح من App Check مع كل طلب، كما هو موضّح في مقالة التحقّق من رموز App Check المميّزة من خلفية مخصّصة.
قبل البدء
أضِف App Check إلى تطبيقك باستخدام موفّر خدمة Play Integrity التلقائي أو موفّر خدمة مخصّص.
إرسال رموز App Check المميّزة مع طلبات الخلفية
لضمان أن تتضمّن طلبات الخلفية رمزًا مميزًا صالحًا وغير منتهي الصلاحية من App Check،
يجب تضمين كل طلب في استدعاء لـ getAppCheckToken(). ستعيد مكتبة App Check تحميل الرمز المميّز إذا لزم الأمر، ويمكنك الوصول إلى الرمز المميّز في أداة الاستماع الناجحة للطريقة.
بعد الحصول على رمز مميّز صالح، أرسِله مع الطلب إلى الخلفية. يمكنك اختيار الطريقة التي تناسبك لتنفيذ ذلك، ولكن لا ترسِل رموز App Check المميّزة كجزء من عناوين URL، بما في ذلك في معلمات طلب البحث، لأنّ ذلك يجعلها عرضة للتسريب والاعتراض غير المقصودَين. الطريقة المقترَحة هي إرسال الرمز المميّز في عنوان 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); // ... } }); } }
الحماية من هجمات إعادة الإرسال (إصدار تجريبي)
عند إرسال طلب إلى نقطة نهاية تم تفعيل الحماية من إعادة التشغيل لها،
يجب تضمين الطلب في استدعاء 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(); // ... } } );