Benutzerdefinierte Backend-Ressourcen mit App Check auf Android-Geräten schützen

Sie können App Check verwenden, um benutzerdefinierte Backend-Ressourcen von Drittanbietern für Ihre App zu schützen, z. B. Ihr eigenes gehostetes Backend. Gehen Sie dazu so vor:

Hinweis

Fügen Sie Ihrer App App Check hinzu. Verwenden Sie dazu entweder den standardmäßigen Play Integrity-Anbieter oder einen benutzerdefinierten Anbieter.

App Check-Tokens mit Backendanfragen senden

Damit deine Backend-Anfragen ein gültiges, nicht abgelaufenes App Check-Token enthalten, solltest du jede Anfrage in einen Aufruf von getAppCheckToken() einschließen. Die App Check-Bibliothek aktualisiert das Token bei Bedarf. Du kannst über den Erfolgs-Listener der Methode auf das Token zugreifen.

Sobald du ein gültiges Token hast, sende es zusammen mit der Anfrage an dein Backend. Wie Sie dies genau erreichen, liegt in Ihrer Entscheidung. Senden Sie App Check-Tokens jedoch nicht als Teil von URLs, einschließlich in Abfrageparametern, da sie dadurch anfällig für versehentliches Leck und Abfangen sind. Wir empfehlen, das Token in einem benutzerdefinierten HTTP-Header zu senden.

Wenn Sie beispielsweise Retrofit verwenden:

Kotlin

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

Replay-Schutz (Beta)

Wenn du eine Anfrage an einen Endpunkt sendest, für den du den Replay-Schutz aktiviert hast, solltest du die Anfrage in einen Aufruf von getLimitedUseAppCheckToken() statt getAppCheckToken() einbetten:

Kotlin

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

Java

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