Utilizzare App Check per proteggere SDK Navigation per Android
Firebase App Check protegge le chiamate dalla tua app a Google Maps Platform bloccando il traffico proveniente da origini diverse dalle tue app legittime. A questo scopo, richiede a un fornitore di attestazioni come Play Integrity una valutazione dell'autenticità dell'app o del dispositivo. Quando integri la tua app con App Check, aggiungi una protezione contro le richieste dannose e non autorizzate, che a sua volta protegge la tua fatturazione da addebiti non autorizzati. App Check migliora anche in modo significativo la segnalazione di interruzioni in tempo reale nell'ecosistema di app della tua flotta, a vantaggio di tutti i conducenti che utilizzano la tua app. Per ulteriori informazioni, consulta Segnalazione di interruzioni.
Perché utilizzare App Check?
App Check protegge due aree distinte dell'SDK Navigation per Android: la funzionalità di navigazione principale e la segnalazione di interruzioni.
Navigazione
App Check aiuta a bloccare le richieste principali dell'SDK Navigation per Android provenienti da fonti dannose o non autorizzate. Ciò ti avvantaggia direttamente proteggendo il tuo progetto da fatturazione fraudolenta ed esaurimento della quota.
Segnalazione di interruzioni
App Check è consigliata vivamente se la tua app supporta le funzionalità di segnalazione e voto dei disservizi in tempo reale. L'attivazione di App Check garantisce che ai tuoi autisti vengano forniti i percorsi più accurati, tenendo conto di tutti i feedback in tempo reale.
Perché App Check è importante per la generazione di report:
- La barra di attendibilità elevata per le chiusure:gli eventi che influiscono sul percorso, come le chiusure stradali, possono alterare in modo significativo il comportamento di routing per tutti i conducenti. Per proteggere la mappa da potenziali atti vandalici, spam o segnalazioni imprecise, l'infrastruttura di moderazione di Google per le interruzioni dovute alla chiusura stradale si basa su solidi indicatori di integrità dell'app e dei dispositivi.
- Come App Check convalida i report:i report e i voti degli utenti inviati da Navigation SDK per Android includono il token App Check, che viene utilizzato dal backend di Google per convalidare la legittimità del feedback, aumentandone il livello di attendibilità e consentendo di valutarne l'impatto sulla mappa in tempo reale.
- Impatto dell'omissione di App Check:i report inviati senza un token App Check valido vengono valutati in base a un modello di attendibilità inferiore e potrebbero essere elaborati solo come indicatori silenziosi. Ciò significa che, sebbene gli utenti possano ancora segnalare e votare, è meno probabile che le loro segnalazioni siano visibili sulla mappa o influiscano sui percorsi di altri conducenti e richiederanno una convalida aggiuntiva.
App Check è adatto a me?
App Check è consigliato nella maggior parte dei casi; tuttavia, non è necessario o non è supportato nei seguenti scenari:
- App private o sperimentali:se la tua app non è accessibile pubblicamente, non è necessario App Check.
- Dispositivi compromessi:i fornitori di attestazione consigliati impediscono l'esecuzione di Navigation SDK for Android su dispositivi non attendibili, come smartphone rooted o jailbroken. Per supportare questi dispositivi, implementa un provider di attestazione personalizzato.
- Dispositivi Android non GMS:i dispositivi Android devono eseguire Google Mobile Services (GMS) per Play Integrity. Se prevedi di supportare dispositivi Android non GMS, implementa un provider di attestazione personalizzato.
Panoramica dei passaggi di implementazione
In linea generale, per integrare l'app con App Check, segui questi passaggi:
- Aggiungi Firebase alla tua app.
- Aggiungi la libreria App Check e inizializza App Check.
- Aggiungi un fornitore di token. Questo passaggio richiama il provider di attestazione di tua scelta per verificare l'integrità del dispositivo o dell'app.
- Inizializza le API Navigation e App Check.
- Attiva il debug. Ciò è utile durante lo sviluppo o negli ambienti di integrazione continua (CI).
- Monitora le richieste dell'app prima di attivare l'applicazione. In questo modo, puoi applicare App Check senza problemi e senza interrompere l'esperienza dei tuoi utenti.
Considerazioni per la pianificazione di un'integrazione di App Check
- Quote del fornitore di attestazioni:il fornitore di attestazioni che consigliamo, Play Integrity, ha un limite di chiamate giornaliere per il suo livello di utilizzo dell'API Standard. Per saperne di più sui limiti delle chiamate, consulta la pagina Configurazione nella documentazione per gli sviluppatori di Google Play Integrity.
- Latenza di avvio:nella maggior parte dei casi, gli utenti non riscontrano latenza durante l'utilizzo regolare, perché i token App Check vengono memorizzati nella cache del dispositivo. Il sistema aggiorna automaticamente i token di App Check in background prima della scadenza per mantenere prestazioni ottimali. Tuttavia, se non è presente un token App Check valido, gli utenti della tua app riscontreranno una certa latenza all'avvio. Ad esempio, questa latenza si verifica durante gli avvii a freddo quando un token memorizzato nella cache è scaduto o mancante.
- Durata (TTL) token:la durata (TTL) determina il periodo di validità del token App Check prima che debba essere aggiornato. Puoi configurare questa durata da 30 minuti a 7 giorni nella console Firebase. Una durata di 1 ora è consigliata come base sicura, ma l'SDK tenta automaticamente gli aggiornamenti in background a circa metà della durata TTL. Per istruzioni dettagliate sulla console, consulta la documentazione di Firebase App Check.
Integrare l'app con App Check
Prerequisiti e requisiti
- Un'app con l'SDK Navigation per Android versione 7.9 o successive installata.
- L'impronta del certificato SHA-256 della tua app.
- Il nome del pacchetto della tua app.
- Devi essere il proprietario dell'app nella console Google Cloud.
- L'ID progetto della tua app dalla console Google Cloud.
Passaggio 1: aggiungi Firebase alla tua app
Segui le istruzioni nella documentazione per gli sviluppatori di Firebase per aggiungere Firebase alla tua app. Aggiungi il file google-services.json alla directory a livello di app del tuo progetto.
Passaggio 2: aggiungi la libreria App Check e inizializza App Check
Aggiungi la dipendenza App Check al file build.gradle della tua app:
Groovy (build.gradle)
dependencies { // Import the Firebase BoM implementation platform('com.google.firebase:firebase-bom:34.17.0') // Add the dependency for the App Check library with Play Integrity implementation 'com.google.firebase:firebase-appcheck-playintegrity' }
Inizializza App Check nella classe dell'applicazione o nell'attività principale:
Java
import com.google.firebase.FirebaseApp; import com.google.firebase.appcheck.FirebaseAppCheck; import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory; // Initialize Firebase App FirebaseApp.initializeApp(/* context= */ this); // Initialize App Check FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance());
Kotlin
import com.google.firebase.Firebase import com.google.firebase.appcheck.appCheck import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory import com.google.firebase.initialize // Initialize Firebase App Firebase.initialize(context = this) // Initialize App Check Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), )
Passaggio 3: aggiungi il fornitore di token
Crea un'implementazione dell'interfaccia MapsAppCheckTokenProvider. Questo fornitore recupera in modo asincrono i token App Check da Firebase App Check e li passa allo stack di rete dell'SDK Navigation per Android utilizzando MapsAppCheckTokenCallback:
Java
import com.google.android.gms.maps.MapsAppCheckTokenCallback; import com.google.android.gms.maps.MapsAppCheckTokenProvider; import com.google.firebase.appcheck.FirebaseAppCheck; public class NavigationTokenProvider implements MapsAppCheckTokenProvider { @Override public void fetchToken(MapsAppCheckTokenCallback callback) { FirebaseAppCheck.getInstance() .getAppCheckToken(false) // forcingRefresh = false .addOnSuccessListener( tokenResult -> { String token = tokenResult.getToken(); callback.onSuccess(token); }) .addOnFailureListener( e -> { callback.onFailure(); }); } }
Kotlin
import com.google.android.gms.maps.MapsAppCheckTokenCallback import com.google.android.gms.maps.MapsAppCheckTokenProvider import com.google.firebase.appcheck.FirebaseAppCheck class NavigationTokenProvider : MapsAppCheckTokenProvider { override fun fetchToken(callback: MapsAppCheckTokenCallback) { FirebaseAppCheck.getInstance() .getAppCheckToken(false) .addOnSuccessListener { tokenResult -> callback.onSuccess(tokenResult.token) } .addOnFailureListener { callback.onFailure() } } }
Passaggio 4: inizializza le API Navigation e App Check
Inizializza l'SDK Navigation per Android e registra l'istanza del provider di token unificato utilizzando MapsApiSettings.setAppCheckTokenProvider():
Java
import com.google.android.gms.maps.MapsApiSettings; // Register your App Check token provider before initializing Navigation SDK for Android MapsApiSettings.setAppCheckTokenProvider(context, new NavigationTokenProvider());
Kotlin
import com.google.android.gms.maps.MapsApiSettings // Register your App Check token provider before initializing Navigation SDK for Android MapsApiSettings.setAppCheckTokenProvider(context, NavigationTokenProvider())
(Facoltativo) Passaggio 5: attiva il debug
Dopo l'applicazione di App Check per Navigation SDK for Android, le funzionalità della tua app che dipendono da Navigation SDK for Android non verranno eseguite in un simulatore o da un ambiente di integrazione continua (CI) perché questi ambienti non sono considerati dispositivi validi. Per eseguire l'app in questi ambienti durante lo sviluppo e il test, devi creare una build di debug dell'app che utilizzi il provider di debug di App Check anziché un provider di attestazione di produzione.
- Aggiungi la dipendenza del provider di debug al file
build.gradledella tua app:Groovy (build.gradle)
dependencies { implementation 'com.google.firebase:firebase-appcheck-debug' }
- Configura App Check in modo che utilizzi la factory del provider di debug nelle build di debug:
Java
import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory; import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory; if (BuildConfig.DEBUG) { firebaseAppCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance() ); } else { firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance() ); }
Kotlin
import com.google.firebase.Firebase import com.google.firebase.appcheck.appCheck import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory if (BuildConfig.DEBUG) { Firebase.appCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance(), ) } else { Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), ) }
- Avvia l'app su un emulatore o un dispositivo di debug. App Check stamperà un token di debug locale nell'output di logcat.
- Copia e registra questo token di debug nella console Firebase. Per ulteriori dettagli, consulta la documentazione del provider di debug di Firebase App Check.
Passaggio 6: monitora le richieste dell'app e decidi l'applicazione
Prima di attivare l'applicazione, monitora le richieste della tua app per assicurarti di non interrompere l'attività degli utenti legittimi.
- Visita la schermata delle metriche di App Check nella console Firebase per visualizzare la percentuale di traffico verificato rispetto a quello non verificato.
- Quando avrai la certezza che la maggior parte del traffico è verificata e che gli utenti legittimi hanno eseguito l'aggiornamento a una versione della tua app contenente l'implementazione di App Check, attiva l'applicazione.
- Una volta attivata l'applicazione, App Check rifiuterà tutto il traffico senza un token App Check valido.