אתה יכול להגן על המשאבים של האפליקציה שלך שאינם Firebase, כגון גיבויים מתארחים בעצמם, באמצעות App Check. כדי לעשות זאת, תצטרך לבצע את שתי הפעולות הבאות:
- שנה את לקוח האפליקציה שלך כדי לשלוח אסימון App Check יחד עם כל בקשה ל-backend שלך, כמתואר בדף זה.
- שנה את הקצה העורפי שלך כדי לדרוש אסימון בדיקת אפליקציות חוקי עם כל בקשה, כמתואר באימות אסימוני בדיקת אפליקציות מקצה אחורי מותאם אישית .
לפני שאתה מתחיל
הוסף App Check לאפליקציה שלך, באמצעות ספק ברירת המחדל של Play Integrity , או ספק מותאם אישית .
שלח אסימוני בדיקת אפליקציה עם בקשות קצה
כדי להבטיח שבקשות הקצה האחורי שלך כוללות אסימון App Check תקף שלא פג תוקפו, עטוף כל בקשה בקריאה אל getAppCheckToken()
. ספריית App Check תרענן את האסימון במידת הצורך, ותוכל לגשת לאסימון במאזין ההצלחה של השיטה.
ברגע שיש לך אסימון תקף, שלח אותו יחד עם הבקשה ל-backend שלך. הספציפיות של האופן שבו אתה משיג זאת תלוי בך, אך אל תשלח אסימוני App Check כחלק מכתובות האתרים , כולל בפרמטרים של שאילתה, מכיוון שהדבר הופך אותם לפגיעים לדליפה ויירוט בשוגג. הגישה המומלצת היא לשלוח את האסימון בכותרת HTTP מותאמת אישית.
לדוגמה, אם אתה משתמש ב-Retrofit:
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() { 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+KTX
Firebase.appCheck.limitedUseAppCheckToken.addOnSuccessListener { // ... }
Java
FirebaseAppCheck.getInstance() .getLimitedUseAppCheckToken().addOnSuccessListener( new OnSuccessListener<AppCheckToken>() { @Override public void onSuccess(AppCheckToken appCheckToken) { String token = appCheckToken.getToken(); // ... } } );