אתם יכולים להשתמש ב-App Check כדי להגן על משאבי קצה עורפי מותאמים אישית של האפליקציה שלא שייכים ל-Google, כמו קצה עורפי באירוח עצמי. כדי לעשות את זה, צריך לבצע את שתי הפעולות הבאות:
- משנים את הלקוח של האפליקציה כך שישלח אסימון App Check עם כל בקשה לקצה העורפי, כמו שמתואר בדף הזה.
- משנים את הקצה העורפי כך שידרוש אסימון App Check תקף בכל בקשה, כפי שמתואר במאמר אימות אסימוני App Check מקצה עורפי בהתאמה אישית.
לפני שמתחילים
מוסיפים את App Check לאפליקציה באמצעות ספק ברירת המחדל של Play Integrity או ספק בהתאמה אישית.
שליחת אסימוני App Check עם בקשות לקצה העורפי
כדי לוודא שבקשות הקצה העורפי כוללות אסימון App Check חוקי שלא פג תוקפו, צריך לעטוף כל בקשה בקריאה ל-getAppCheckToken(). ספריית App Check תרענן את הטוקן במקרה הצורך, ותוכלו לגשת לטוקן במאזין להצלחה של ה-method.
אחרי שמקבלים אסימון תקין, שולחים אותו יחד עם הבקשה לקצה העורפי. אתם יכולים לבחור איך לעשות את זה, אבל אל תשלחו אסימוני 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); // ... } }); } }
הגנה מפני הפעלה מחדש (בטא)
כששולחים בקשה לנקודת קצה (endpoint) שהפעלתם בה הגנה מפני התקפות Replay, צריך לעטוף את הבקשה בקריאה ל-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(); // ... } } );