Check out what’s new from Firebase at Google I/O 2022. Learn more

הגן על משאבים שאינם Firebase עם App Check ב-Android

אתה יכול להגן על המשאבים של האפליקציה שלך שאינם Firebase, כגון קצה עורפי שמתארח בעצמך, באמצעות App Check. כדי לעשות זאת, תצטרך לבצע את שתי הפעולות הבאות:

לפני שאתה מתחיל

הוסף App Check לאפליקציה שלך, באמצעות ספק ברירת המחדל של Play Integrity , או ספק מותאם אישית .

שלח אסימוני בדיקת אפליקציה עם בקשות קצה אחורי

כדי להבטיח שבקשות הקצה האחורי שלך כוללות אסימון App Check חוקי שלא פג תוקפו, עטוף כל בקשה בקריאה אל getAppCheckToken() . ספריית App Check תרענן את האסימון במידת הצורך, ותוכל לגשת לאסימון במאזין ההצלחה של השיטה.

ברגע שיש לך אסימון תקף, שלח אותו יחד עם הבקשה ל-backend שלך. הספציפיות של האופן שבו אתה משיג זאת תלוי בך, אך אל תשלח אסימוני App Check כחלק מכתובות האתרים , כולל בפרמטרים של שאילתה, מכיוון שהדבר הופך אותם לפגיעים לדליפה ויירוט בשוגג. הגישה המומלצת היא לשלוח את האסימון בכותרת HTTP מותאמת אישית.

לדוגמה, אם אתה משתמש ב-Retrofit:

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);
                        // ...
                    }
                });
    }
}

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)
                // ...
            }
    }
}