Sie können die nicht Firebase-Ressourcen Ihrer App, z. B. selbst gehostete Backends, mit App Check schützen. Dazu sind die folgenden beiden Schritte erforderlich:
- Ändern Sie Ihren App-Client so, dass er mit jeder Anfrage ein App Check-Token an Ihr Backend sendet, wie auf dieser Seite beschrieben.
- Ändern Sie Ihr Backend so, dass für jede Anfrage ein gültiges App Check-Token erforderlich ist, wie unter App Check-Tokens über ein benutzerdefiniertes Backend überprüfen beschrieben.
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 Ihre Back-End-Anfragen ein gültiges, nicht abgelaufenes App Check-Token enthalten, verpacken Sie jede Anfrage in einem Aufruf von getAppCheckToken()
. 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 erreichen, liegt ganz bei Ihnen. Senden Sie jedoch keine App Check-Tokens als Teil von URLs, auch nicht in Abfrageparametern, da sie dadurch anfällig für versehentliches Datenleck und Abfangen sind. Wir empfehlen, 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); // ... } }); } }
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+KTX
Firebase.appCheck.limitedUseAppCheckToken.addOnSuccessListener { // ... }
Java
FirebaseAppCheck.getInstance() .getLimitedUseAppCheckToken().addOnSuccessListener( new OnSuccessListener<AppCheckToken>() { @Override public void onSuccess(AppCheckToken appCheckToken) { String token = appCheckToken.getToken(); // ... } } );