Chroń zasoby inne niż Firebase za pomocą sprawdzania aplikacji na Androidzie

Za pomocą Sprawdzania aplikacji możesz chronić zasoby swojej aplikacji inne niż Firebase, takie jak własne 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 Integralności Play lub dostawcy niestandardowego .

Wysyłaj tokeny sprawdzania aplikacji z żądaniami zaplecza

Aby mieć pewność, że żądania zaplecza zawierają prawidłowy, nie wygasły token sprawdzania aplikacji, zawiń każde żądanie w wywołaniu funkcji getAppCheckToken() . W razie potrzeby biblioteka sprawdzania aplikacji odświeży token, a dostęp do tokenu będzie można uzyskać w odbiorniku powodzenia metody.

Gdy już będziesz mieć prawidłowy token, wyślij go wraz z żądaniem do swojego backendu. Szczegóły, jak to osiągnąć, zależą 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 przypadkowy wyciek i przechwycenie. Zalecanym podejściem jest wysłanie tokena 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 przed powtórkami (beta)

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