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