Abilita App Check con un provider personalizzato sulle app Web

Su questa pagina trovi come abilitare App Check in una web app, utilizzando la vostra abitudine App Controllare fornitore . Quando abiliti App Check, contribuisci a garantire che solo la tua app possa accedere alle risorse Firebase del tuo progetto.

Se si desidera utilizzare App Verificare con il provider di reCAPTCHA predefinita, vedere Enable App Verificare con reCAPTCHA su applicazioni web .

Prima di iniziare

1. Aggiungi la libreria App Check alla tua app

Aggiungere Firebase al web app , se non l'hai già. Assicurati di importare la libreria App Check.

2. Creare l'oggetto provider App Check

Crea un oggetto provider App Check per il tuo provider personalizzato. Questo oggetto deve avere un getToken() metodo, che raccoglie tutte le informazioni vostra abitudine App Controllare provider richiede come prova di autenticità, e lo invia al servizio di acquisizione di token in cambio di un App Controllare token. L'App Controlla SDK maniglie caching gettone, in modo sempre ottenere un nuovo token nell'implementazione di getToken() .

Versione web 9

const { CustomProvider } = require("firebase/app-check");

const appCheckCustomProvider = new CustomProvider({
  getToken: () => {
    return new Promise((resolve, _reject) => {
      // TODO: Logic to exchange proof of authenticity for an App Check token and
      // expiration time.

      // ...

      const appCheckToken = {
        token: tokenFromServer,
        expireTimeMillis: expirationFromServer * 1000
      };

      resolve(appCheckToken);
    });
  }
});

Versione web 8

const appCheckCustomProvider = {
  getToken: () => {
    return new Promise((resolve, _reject) => {
      // TODO: Logic to exchange proof of authenticity for an App Check token and
      // expiration time.

      // ...

      const appCheckToken = {
        token: tokenFromServer,
        expireTimeMillis: expirationFromServer * 1000
      };

      resolve(appCheckToken);
    });
  }
};

3. Inizializza il controllo dell'app

Aggiungi il seguente codice di inizializzazione alla tua applicazione, prima di accedere a qualsiasi servizio Firebase:

Versione web 9

const { initializeApp } = require("firebase/app");
const { initializeAppCheck } = require("firebase/app-check");

const app = initializeApp({
  // Your firebase configuration object
});

const appCheck = initializeAppCheck(app, {
  provider: appCheckCustomProvider,

  // Optional argument. If true, the SDK automatically refreshes App Check
  // tokens as needed.
  isTokenAutoRefreshEnabled: true    
});

Versione web 8

firebase.initializeApp({
  // Your firebase configuration object
});

const appCheck = firebase.appCheck();
appCheck.activate(
  appCheckCustomProvider,

  // Optional argument. If true, the SDK automatically refreshes App Check
  // tokens as needed.
  true);

Una volta che la libreria App Check è stata installata nella tua app, distribuiscila.

L'app client aggiornata inizierà a inviare token App Check insieme a ogni richiesta effettuata a Firebase, ma i prodotti Firebase non richiederanno che i token siano validi finché non abiliterai l'applicazione nella sezione App Check della console Firebase. Vedere le due sezioni successive per i dettagli.

4. Monitora le metriche delle richieste

Ora che la tua app aggiornata è nelle mani degli utenti, puoi abilitare l'applicazione di App Check per i prodotti Firebase che utilizzi. Prima di farlo, tuttavia, dovresti assicurarti che ciò non interrompa i tuoi utenti legittimi esistenti.

Database in tempo reale, Cloud Firestore e Cloud Storage

Uno strumento importante che puoi utilizzare per prendere questa decisione per Realtime Database, Cloud Firestore e Cloud Storage è la schermata delle metriche di richiesta di App Check.

Per visualizzare l'applicazione Verificare richiesta metriche per un prodotto, aprire l'Impostazioni progetto> App Controllare la sezione della console Firebase. Per esempio:

Screenshot della pagina delle metriche di App Check

Le metriche di richiesta per ogni prodotto sono suddivise in quattro categorie:

  • Richieste verificati sono quelli che hanno un App valida Controllare token. Dopo aver abilitato l'applicazione di App Check, solo le richieste in questa categoria avranno esito positivo.

  • Le richieste dei client obsoleti sono quelli che mancano un App Controllare token. Queste richieste potrebbero provenire da una versione precedente dell'SDK Firebase prima che App Check fosse incluso nell'app.

  • Le richieste di origine sconosciuta sono quelli che mancano un App Controllare token e non sembrano provengono dalla Firebase SDK. Questi potrebbero provenire da richieste effettuate con chiavi API rubate o richieste contraffatte effettuate senza l'SDK Firebase.

  • Richieste non valide sono quelle che hanno un'App non valida Controllare token, che potrebbe essere da un client non autentica di tentare di impersonare la vostra applicazione, o da ambienti emulati.

La distribuzione di queste categorie per la tua app dovrebbe informare quando decidi di abilitare l'applicazione. Ecco alcune linee guida:

  • Se quasi tutte le richieste recenti provengono da client verificati, considera di abilitare l'applicazione per iniziare a proteggere le tue risorse di backend.

  • Se una parte significativa delle richieste recenti proviene da client probabilmente obsoleti, per evitare di disturbare gli utenti, valuta di attendere che più utenti aggiornino la tua app prima di abilitare l'applicazione. L'applicazione di App Check su un'app rilasciata interromperà le versioni precedenti dell'app che non sono integrate con App Check SDK.

  • Se la tua app non è stata ancora avviata, dovresti abilitare immediatamente l'applicazione di App Check, poiché non ci sono client obsoleti in uso.

Funzioni cloud

Per Cloud Functions, puoi ottenere le metriche di App Check esaminando i log delle tue funzioni. Ogni invocazione di una funzione richiamabile emette una voce di log strutturata come il seguente esempio:

{
  "severity": "INFO",    // INFO, WARNING, or ERROR
  "logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
  "jsonPayload": {
    "message": "Callable header verifications passed.",
    "verifications": {
      // ...
      "app": "MISSING",  // VALID, INVALID, or MISSING
    }
  }
}

È possibile analizzare queste metriche nel Cloud Console di Google per la creazione di un log-based contatore metrica con il seguente filtro metrica:

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

Etichettare la metrica utilizzando il campo jsonPayload.verifications.appCheck .

5. Abilita l'applicazione

Per abilitare l'applicazione, seguire le istruzioni per ciascun prodotto, di seguito. Una volta abilitata l'applicazione per un prodotto, tutte le richieste non verificate a quel prodotto verranno respinte.

Database in tempo reale, Cloud Firestore e Cloud Storage

Per abilitare l'applicazione per Realtime Database, Cloud Firestore (iOS e Android) e Cloud Storage:

  1. Aprire il Controllo Impostazioni progetto> App sezione della console Firebase.

  2. Espandi la visualizzazione delle metriche del prodotto per il quale desideri abilitare l'applicazione.

  3. Fare clic su Applica e confermare la scelta.

Tieni presente che possono essere necessari fino a 10 minuti dopo l'attivazione dell'applicazione affinché abbia effetto.

Funzioni cloud

Vedere Abilita App Verificare l'applicazione per le funzioni cloud .