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:
- Ändern Sie Ihren App-Client so, dass er zusammen mit jeder Anfrage ein App-Check-Token an Ihr Backend sendet, wie auf dieser Seite beschrieben.
- Ändern Sie Ihr Backend so, dass bei jeder Anfrage ein gültiges App-Check-Token erforderlich ist, wie unter Überprüfen von App-Check-Tokens von einem benutzerdefinierten Backend aus beschrieben.
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(); // ... } } );