Ochrona zasobów spoza Firebase za pomocą Sprawdzania aplikacji na Androida

Możesz chronić zasoby aplikacji spoza Firebase, takie jak własne backendy, za pomocą Sprawdzania aplikacji. Aby to zrobić, musisz wykonać obie te czynności:

Zanim zaczniesz

Dodaj Sprawdzanie aplikacji do swojej aplikacji, używając wartości domyślnej dostawcę Play Integrity lub dostawcy niestandardowego.

Wysyłaj tokeny Sprawdzania aplikacji z żądaniami backendu

Aby żądania backendu zawierały prawidłowy, niewygasły token Sprawdzania aplikacji, umieść każde żądanie w wywołaniu funkcji getAppCheckToken(). Biblioteka Sprawdzania aplikacji w razie potrzeby odświeży token i będzie on dostępny na detektora sukcesu metody.

Po uzyskaniu prawidłowego tokena wyślij go do backendu wraz z żądaniem. jak to zrobisz, zależy od Ciebie, ale nie wysyłaj Tokeny Sprawdzania aplikacji w ramach adresów URL, m.in. w parametrach zapytania, ponieważ narażają je na przypadkowe wyciek i przechwycenie. Zalecane wysłanie tokena w niestandardowym nagłówku HTTP.

Na przykład, jeśli używasz Retrofit:

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 ponownego odtwarzania (beta)

Podczas wysyłania żądania do punktu końcowego, dla którego włączono ochrony przed ponownym odtwarzaniem, umieść żądanie w wywołaniu funkcji 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();
                        // ...
                    }
                }
        );