אתם יכולים להשתמש ב-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) שהפעלתם בה הגנה מפני הפעלה חוזרת, צריך לעטוף את הבקשה בקריאה ל-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(); // ... } } );