Firebase is back at Google I/O on May 10! Register now

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

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Sie können die Nicht-Firebase-Ressourcen Ihrer App, wie z. B. selbst gehostete Back-Ends, mit App Check schützen. Dazu müssen Sie die beiden 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 Back-End-Anforderungen ein gültiges, nicht abgelaufenes App-Check-Token enthalten, schließen Sie jede Anforderung 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 ein gültiges Token haben, senden Sie es zusammen mit der Anfrage an Ihr Backend. Wie Sie dies im Einzelnen erreichen, liegt bei Ihnen, aber senden Sie keine App Check-Tokens als Teil von URLs, auch nicht in Abfrageparametern, da sie dadurch anfällig für versehentliches Durchsickern und Abfangen werden. 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() {
        FirebaseAppCheck.getInstance()
            .getAppCheckToken(false)
            .addOnSuccessListener { tokenResponse ->
                val appCheckToken = tokenResponse.token
                val apiCall = yourExampleBackendService.exampleData(appCheckToken)
                // ...
            }
    }
}

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 tokenResponse) {
                        String appCheckToken = tokenResponse.getToken();
                        Call<List<String>> apiCall =
                                yourExampleBackendService.exampleData(appCheckToken);
                        // ...
                    }
                });
    }
}
,

Sie können die Nicht-Firebase-Ressourcen Ihrer App, wie z. B. selbst gehostete Back-Ends, mit App Check schützen. Dazu müssen Sie die beiden 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 Back-End-Anforderungen ein gültiges, nicht abgelaufenes App-Check-Token enthalten, schließen Sie jede Anforderung 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 ein gültiges Token haben, senden Sie es zusammen mit der Anfrage an Ihr Backend. Wie Sie dies im Einzelnen erreichen, liegt bei Ihnen, aber senden Sie keine App Check-Tokens als Teil von URLs, auch nicht in Abfrageparametern, da sie dadurch anfällig für versehentliches Durchsickern und Abfangen werden. 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() {
        FirebaseAppCheck.getInstance()
            .getAppCheckToken(false)
            .addOnSuccessListener { tokenResponse ->
                val appCheckToken = tokenResponse.token
                val apiCall = yourExampleBackendService.exampleData(appCheckToken)
                // ...
            }
    }
}

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 tokenResponse) {
                        String appCheckToken = tokenResponse.getToken();
                        Call<List<String>> apiCall =
                                yourExampleBackendService.exampleData(appCheckToken);
                        // ...
                    }
                });
    }
}