Puoi utilizzare App Check per proteggere le risorse di backend personalizzate non Google per la tua app, come il tuo backend self-hosted. A questo scopo, dovrai fare entrambe le seguenti operazioni:
- Modifica il client dell'app per inviare un token App Check insieme a ogni richiesta al backend, come descritto in questa pagina.
- Modifica il backend in modo che richieda un token App Check valido con ogni richiesta, come descritto in Verificare i token App Check da un backend personalizzato.
Prima di iniziare
Aggiungi App Check alla tua app utilizzando il provider Play Integrity predefinito o un provider personalizzato.
Inviare token App Check con richieste di backend
Per assicurarti che le richieste di backend includano un token App Check valido e non scaduto,
inserisci ogni richiesta in una chiamata a getAppCheckToken()
. La libreria App Check
aggiornerà il token se necessario e potrai accedervi nel
listener di successo del metodo.
Una volta ottenuto un token valido, invialo insieme alla richiesta al tuo backend. I dettagli su come eseguire questa operazione dipendono da te, ma non inviare token App Check come parte degli URL, inclusi i parametri di query, in quanto li rende vulnerabili a perdite e intercettazioni accidentali. L'approccio consigliato è inviare il token in un'intestazione HTTP personalizzata.
Ad esempio, se utilizzi Retrofit:
Kotlin
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); // ... } }); } }
Protezione dalla riproduzione (beta)
Quando effettui una richiesta a un endpoint per il quale hai attivato la
protezione dal replay,
inserisci la richiesta in una chiamata a getLimitedUseAppCheckToken()
anziché a
getAppCheckToken()
:
Kotlin
Firebase.appCheck.limitedUseAppCheckToken.addOnSuccessListener { // ... }
Java
FirebaseAppCheck.getInstance() .getLimitedUseAppCheckToken().addOnSuccessListener( new OnSuccessListener<AppCheckToken>() { @Override public void onSuccess(AppCheckToken appCheckToken) { String token = appCheckToken.getToken(); // ... } } );