Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

Za pomocą funkcji Sprawdzanie aplikacji możesz chronić zasoby swojej aplikacji inne niż Firebase, takie jak samodzielnie hostowane backendy. Aby to zrobić, musisz wykonać obie poniższe czynności:

Zanim zaczniesz

Dodaj Sprawdzanie aplikacji do swojej aplikacji, korzystając z domyślnego dostawcy Play Integrity lub dostawcy niestandardowego .

Wysyłaj tokeny sprawdzania aplikacji z żądaniami zaplecza

Aby upewnić się, że żądania zaplecza zawierają prawidłowy, niewygasły token sprawdzania aplikacji, umieść każde żądanie w wywołaniu metody getAppCheckToken() . Biblioteka sprawdzania aplikacji odświeży token w razie potrzeby i możesz uzyskać dostęp do tokenu w odbiorniku sukcesu metody.

Po uzyskaniu prawidłowego tokena wyślij go wraz z żądaniem do swojego zaplecza. Sposób, w jaki to zrobisz, zależy od Ciebie, ale nie wysyłaj tokenów sprawdzania aplikacji 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 tokenu w niestandardowym nagłówku HTTP.

Na przykład, jeśli korzystasz z Retrofitu:

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

Ochrona powtórek (beta)

Wysyłając żądanie do punktu końcowego, dla którego włączono ochronę przed odtwarzaniem , zawiń żądanie w wywołanie getLimitedUseAppCheckToken() zamiast 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();
                        // ...
                    }
                }
        );