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

Chroń zasoby inne niż Firebase za pomocą funkcji App Check na Androida

Za pomocą Sprawdzania aplikacji możesz chronić zasoby aplikacji inne niż Firebase, takie jak backendy z własnym hostingiem. Aby to zrobić, musisz wykonać obie następujące czynności:

Zanim zaczniesz

Dodaj Sprawdzanie aplikacji do swojej aplikacji, używając domyślnego dostawcy Play Integrity lub dostawcy niestandardowego .

Wysyłaj tokeny App Check z żądaniami zaplecza

Aby upewnić się, że żądania zaplecza zawierają prawidłowy, niewygasły token App Check, umieść każde żądanie w wywołaniu getAppCheckToken() . Biblioteka App Check odświeży token, jeśli to konieczne, i możesz uzyskać dostęp do tokena w odbiorniku sukcesu metody.

Po uzyskaniu prawidłowego tokena wyślij go wraz z żądaniem do swojego zaplecza. To, jak to zrobisz, zależy od Ciebie, ale nie wysyłaj tokenów App Check jako części adresów URL , w tym w parametrach zapytania, ponieważ naraża to je na przypadkowe wycieki i przechwycenie. Zalecanym podejściem jest wysłanie tokena w niestandardowym nagłówku HTTP.

Na przykład, jeśli używasz 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)
                // ...
            }
    }
}