Schützen Sie Nicht-Firebase-Ressourcen mit App Check auf Android

Mit App Check können Sie die Nicht-Firebase-Ressourcen Ihrer App, z. B. selbstgehostete Backends, schützen. Dazu müssen Sie beide der folgenden Schritte ausführen:

Bevor Sie beginnen

Fügen Sie App Check zu Ihrer App hinzu, indem Sie entweder den standardmäßigen Play Integrity-Anbieter oder einen benutzerdefinierten Anbieter verwenden.

Senden Sie App-Check-Tokens mit Backend-Anfragen

Um sicherzustellen, dass Ihre Backend-Anfragen ein gültiges, nicht abgelaufenes App Check-Token enthalten, schließen Sie jede Anfrage in einen Aufruf von getAppCheckToken() ein. Die App Check-Bibliothek aktualisiert das Token bei Bedarf und Sie können im Erfolgs-Listener der Methode auf das Token zugreifen.

Sobald Sie über ein gültiges Token verfügen, senden Sie es zusammen mit der Anfrage an Ihr Backend. Die Einzelheiten, wie Sie dies erreichen, liegen bei Ihnen, aber senden Sie App Check-Tokens nicht als Teil von URLs, auch nicht in Abfrageparametern, da sie dadurch anfällig für versehentliche Datenlecks und Abhörvorgänge sind. Der empfohlene Ansatz besteht darin, das Token in einem benutzerdefinierten HTTP-Header zu senden.

Wenn Sie beispielsweise Retrofit verwenden:

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

Wiedergabeschutz (Beta)

Wenn Sie eine Anfrage an einen Endpunkt stellen, für den Sie den Wiedergabeschutz aktiviert haben, schließen Sie die Anfrage in einen Aufruf von getLimitedUseAppCheckToken() anstelle von getAppCheckToken() ein:

Kotlin+KTX

Firebase.appCheck.limitedUseAppCheckToken.addOnSuccessListener {
    // ...
}

Java

FirebaseAppCheck.getInstance()
        .getLimitedUseAppCheckToken().addOnSuccessListener(
                new OnSuccessListener<AppCheckToken>() {
                    @Override
                    public void onSuccess(AppCheckToken appCheckToken) {
                        String token = appCheckToken.getToken();
                        // ...
                    }
                }
        );