Utilizzare App Check per proteggere la chiave API

Firebase App Check protegge le chiamate dalla tua app a Google Maps Platform bloccando il traffico proveniente da origini diverse dalle app legittime. A tal fine, verifica la presenza di un token di un fornitore di attestazioni come reCAPTCHA Enterprise. L'integrazione delle tue app con App Check contribuisce a proteggerti dalle richieste dannose, in modo che non ti vengano addebitate chiamate API non autorizzate.

App Check è la soluzione adatta a me?

App Check è consigliato nella maggior parte dei casi, ma non è necessario o supportato nei seguenti casi:

  • Stai utilizzando l'SDK originale di Places. La verifica dell'app è supportata solo per l'SDK Places (nuovo).
  • App private o sperimentali. Se la tua app non è accessibile pubblicamente, App Check non è necessario.
  • Se la tua app viene utilizzata solo in modalità server-to-server, App Check non è necessario. Tuttavia, se il server che comunica con GMP viene utilizzato da client pubblici (ad esempio app mobile), ti consigliamo di utilizzare App Check per proteggere il server anziché GMP.

Panoramica della procedura di implementazione

In linea generale, questi sono i passaggi da seguire per integrare la tua app con App Check:

  1. Aggiungi Firebase alla tua app.
  2. Aggiungi e inizializza la libreria App Check.
  3. Aggiungi il provider di token alla tua app.
  4. Inizializza le API Places e App Check.
  5. Attiva il debug.
  6. Monitora le richieste delle app e decidi in merito all'applicazione delle norme.

Una volta completata l'integrazione con App Check, potrai visualizzare le metriche sul traffico di backend nella Console Firebase. Queste metriche forniscono una suddivisione delle richieste in base al fatto che siano o meno accompagnate da un token App Check valido. Per ulteriori informazioni, consulta la documentazione di Firebase App Check.

Quando hai la certezza che la maggior parte delle richieste proviene da origini legittime e che gli utenti hanno eseguito l'aggiornamento alla versione più recente della tua app che include l'implementazione di App Check, puoi attivare l'applicazione forzata. Una volta attivata l'applicazione, App Check rifiuterà tutto il traffico senza un token App Check valido.

Considerazioni per la pianificazione di un'integrazione di App Check

Ecco alcuni aspetti da prendere in considerazione durante la pianificazione dell'integrazione:

  • Uno dei fornitori di attestazioni che consigliamo, reCAPTCHA Enterprise,addebita più di 10.000 valutazioni al mese.

    L'altro fornitore di attestazioni che consigliamo, reCAPTCHA v3, ha una quota, oltre la quale il traffico non verrà valutato.

    Puoi scegliere di utilizzare un fornitore di attestazioni personalizzato, anche se si tratta di un caso d'uso avanzato. Per ulteriori informazioni, consulta la documentazione di App Check.

  • Gli utenti della tua app riscontreranno una certa latenza all'avvio. Tuttavia, in seguito, qualsiasi nuova attestazione periodica verrà eseguita in background e gli utenti non dovrebbero più riscontrare alcuna latenza. L'importo esatto della latenza all'avvio dipende dal fornitore di attestazioni scelto.

    La durata di validità del token App Check (time to live o TTL) determina la frequenza delle nuove attestazioni. Questa durata può essere configurata nella console Firebase. La nuova attestazione avviene quando è trascorsa circa la metà del TTL. Per ulteriori informazioni, consulta la documentazione di Firebase relativa al tuo fornitore di attestazioni.

Integrare l'app con App Check

Prerequisiti e requisiti

Passaggio 1: aggiungi Firebase alla tua app

Segui le istruzioni nella documentazione per gli sviluppatori di Firebase per aggiungere Firebase alla tua app.

Passaggio 2: aggiungi la libreria App Check e inizializza App Check

Firebase fornisce istruzioni per ogni fornitore di attestazioni predefinito. Queste istruzioni mostrano come configurare un progetto Firebase e aggiungere la libreria App Check alla tua app. Segui gli esempi di codice forniti per inizializzare App Check.

Passaggio 3: carica le librerie dell'API Maps JS

  1. Carica le librerie principali, Maps e Places come mostrato nello snippet seguente. Per ulteriori informazioni e istruzioni, consulta la documentazione della classe Place dell'API Maps JavaScript.

    async function init() {
      const {Settings} = await google.maps.importLibrary('core');
      const {Map} = await google.maps.importLibrary('maps');
      const {Place} = await google.maps.importLibrary('places');
    }  

Passaggio 4: inizializza le API Places e App Check

  1. Inizializza App Check utilizzando la configurazione fornita dalla console Firebase.
  2. Assicurati che le richieste all'API Maps JS siano accompagnate da token App Check:
      async function init() {
        const {Settings} = await google.maps.importLibrary('core');
        const {Map} = await google.maps.importLibrary('maps');
        const {Place} = await google.maps.importLibrary('places');
      
        const app = initializeApp({
          // Your firebase configuration object
        });
      
        // Pass your reCAPTCHA Enterprise site key to initializeAppCheck().
        const appCheck = initializeAppCheck(app, {
          provider: new ReCaptchaEnterpriseProvider(
            'abcdefghijklmnopqrstuvwxy-1234567890abcd',
          ),
      
          // Optional argument. If true, the SDK automatically refreshes App Check
          // tokens as needed.
          isTokenAutoRefreshEnabled: true,
        });
      
        Settings.getInstance().fetchAppCheckToken = () =>
            getToken(appCheck, /* forceRefresh = */ false);
      
        // Make a Places JS request
        const place = new Place({id: 'ChIJN5Nz71W3j4ARhx5bwpTQEGg'});
        await place.fetchFields({fields: ['*']});
      
        // Load a map
        map = new Map(document.getElementById("map"), {
          center: { lat: 37.4161493, lng: -122.0812166 },
          zoom: 8,
        });
      }  
      

(Facoltativo) Passaggio 5: attiva il debug

Se vuoi sviluppare e testare la tua app in locale o eseguirla in un ambiente di integrazione continua (CI), puoi creare una build di debug dell'app che utilizzi un segreto di debug per ottenere token App Check validi. In questo modo puoi evitare di utilizzare fornitori di attestazioni reali nella build di debug.

Per testare l'app a livello locale:

  • Attiva il provider di debug a scopo di sviluppo.
  • Riceverai un UUID4 casuale generato automaticamente (chiamato _token di debug_ nella documentazione di App Check) dai log di debug dell'SDK. Aggiungi questo token alla Console Firebase.
  • Per ulteriori informazioni e istruzioni, consulta la documentazione di App Check.

Per eseguire l'app in un ambiente CI:

  • Genera un UUID4 casuale dalla console Firebase.
  • Aggiungi l'UUID4 come token di debug e poi copialo in un archivio segreto a cui accederanno i test CI per ogni esecuzione del test.
  • Per ulteriori informazioni e istruzioni, consulta la documentazione di App Check.

Passaggio 6: monitora le richieste di app e decidi sull'applicazione

Prima di iniziare l'applicazione, assicurati di non interrompere gli utenti legittimi della tua app. Per farlo, vai alla schermata delle metriche di App Check per vedere quale percentuale del traffico della tua app è verificata, obsoleta o illegittima. Una volta che la maggior parte del traffico è stata verificata, puoi attivare l'applicazione.

Per ulteriori informazioni e istruzioni, consulta la documentazione di Firebase App Check.