Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

Sie können die Nicht-Firebase-Ressourcen Ihrer App, z. B. selbstgehostete Back-Ends, mit App Check schützen. Dazu müssen Sie beides tun:

Bevor Sie beginnen

In App überprüfen , um Ihre Anwendung, entweder den Standard mit SafetyNet - Provider oder einen benutzerdefinierten Anbieter .

Senden Sie App-Check-Token mit Back-End-Anfragen

Um sicherzustellen , dass Ihre Backend - Anforderungen umfassen ein gültiger, noch nicht abgelaufen, App überprüfen Token, wickelt jede Anforderung in einem Aufruf an getAppCheckToken() . Die App Check-Bibliothek aktualisiert das Token bei Bedarf, und Sie können auf das Token im Erfolgslistener der Methode zugreifen.

Sobald Sie ein gültiges Token haben, senden Sie es zusammen mit der Anfrage an Ihr Backend. Die Besonderheiten, wie Sie dies zu erreichen sind bis zu Ihnen, aber nicht App überprüfen Token als Teil von URLs, einschließlich in Abfrageparametern senden, da dies sie anfällig für versehentliche Leckage und Abfangen macht. Der empfohlene Ansatz besteht darin, das Token in einem benutzerdefinierten HTTP-Header zu senden.

Wenn Sie beispielsweise Retrofit verwenden:

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

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