Implementa un provider App Check personalizzato

App Check supporta diversi provider: DeviceCheck e App Attest sulle piattaforme Apple, Play Integrity su Android e reCAPTCHA Enterprise nelle app web (panoramica). Si tratta di fornitori ben noti che dovrebbero soddisfare le esigenze della maggior parte degli sviluppatori. Tuttavia, puoi anche implementare i tuoi provider App Check personalizzati. L'utilizzo di un provider personalizzato è necessario quando:

  • Vuoi utilizzare un provider diverso da quelli integrati.

  • Vuoi utilizzare i provider integrati in modi non supportati.

  • Vuoi verificare i dispositivi utilizzando piattaforme diverse da Apple, Android e dal web. Ad esempio, puoi creare App Check provider per sistemi operativi desktop o dispositivi IoT.

  • Vuoi implementare le tue tecniche di verifica su qualsiasi piattaforma.

Panoramica

Per implementare un provider App Check personalizzato, hai bisogno di un ambiente backend sicuro in grado di eseguire Firebase Admin SDK Node.js. Può trattarsi di Cloud Functions, di una piattaforma container come Cloud Run o del tuo server.

Da questo ambiente, fornirai un servizio accessibile dalla rete che riceve la prova di autenticità dai client della tua app e, se la prova di autenticità supera la tua valutazione di autenticità, restituisce un token App Check. Gli indicatori specifici che utilizzi come prova di autenticità dipendono dal fornitore di terze parti che utilizzi o dagli indicatori che hai inventato, se implementi una logica personalizzata.

In genere, esponi questo servizio come endpoint REST o gRPC, ma questo dettaglio dipende da te.

Crea l'endpoint di acquisizione dei token

  1. Installa e inizializza Admin SDK.

  2. Crea un endpoint accessibile dalla rete che possa ricevere dati di autenticità dai tuoi client. Ad esempio, utilizzando Cloud Functions:

    // Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken
    exports.fetchAppCheckToken = functions.https.onRequest((request, response) => {
      // ...
    });
    
  3. Aggiungi alla logica dell'endpoint che valuta i dati di autenticità. Questa è la logica di base del tuo fornitore App Check personalizzato, che dovrai scrivere tu.

  4. Se determini che il client è autentico, utilizza Admin SDK per creare un token App Check e restituirlo al client insieme alla relativa ora di scadenza:

    const admin = require('firebase-admin');
    admin.initializeApp();
    
    // ...
    
    admin.appCheck().createToken(appId)
        .then(function (appCheckToken) {
          // Token expires in an hour.
          const expiresAt = Math.floor(Date.now() / 1000) + 60 * 60;
    
          // Return appCheckToken and expiresAt to the client.
        })
       .catch(function (err) {
         console.error('Unable to create App Check token.');
         console.error(err);
       });
    

    Se non riesci a verificare l'autenticità del client, restituisci un errore (ad esempio, restituisci un errore HTTP 403).

  5. (Facoltativo): imposta la durata (TTL) per i token App Check emessi dal tuo provider personalizzato passando un oggetto AppCheckTokenOptions a createToken(). Puoi impostare il TTL su qualsiasi valore compreso tra 30 minuti e 7 giorni. Quando imposti questo valore, tieni presente i seguenti compromessi:

    • Sicurezza: i TTL più brevi offrono una maggiore sicurezza, perché riducono il periodo di tempo in cui un token compromesso o intercettato può essere utilizzato in modo illecito da un malintenzionato.
    • Rendimento: TTL più brevi significano che la tua app eseguirà l'attestazione più spesso. Poiché il processo di attestazione dell'app aggiunge latenza alle richieste di rete ogni volta che viene eseguito, un TTL breve può influire sulle prestazioni dell'app.

    Il TTL predefinito di 1 ora è ragionevole per la maggior parte delle app.

Passaggi successivi

Ora che hai implementato la logica lato server del tuo fornitore personalizzato, scopri come utilizzarla dai client Apple, Android e web.