Implementare un provider App Check personalizzato

App Check dispone del supporto integrato per diversi provider: DeviceCheck e App Attest sulle piattaforme Apple, Play Integrity e SafetyNet su Android e reCAPTCHA Enterprise nelle app Web ( panoramica ). Si tratta di fornitori ben conosciuti che dovrebbero soddisfare le esigenze della maggior parte degli sviluppatori. Puoi, tuttavia, anche implementare i tuoi provider App Check personalizzati. L'utilizzo di un provider personalizzato è necessario quando:

  • Desideri utilizzare un provider diverso da quelli integrati.

  • Desideri utilizzare i provider integrati in modi non supportati.

  • Desideri verificare i dispositivi che utilizzano piattaforme diverse da Apple, Android e dal Web. Ad esempio, potresti creare provider App Check per sistemi operativi desktop o dispositivi Internet of Things.

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

Panoramica

Per implementare un provider App Check personalizzato, è necessario un ambiente backend sicuro in grado di eseguire Node.js Firebase Admin SDK . 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 valutazione di autenticità, restituisce un token App Check. Gli indicatori specifici che utilizzi come prova di autenticità dipenderanno dal fornitore di terze parti che stai utilizzando o dagli indicatori di tua invenzione, se stai implementando una logica personalizzata.

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

Crea l'endpoint di acquisizione del token

  1. Installa e inizializza l'Admin SDK .

  2. Crea un endpoint accessibile dalla rete in grado di ricevere dati di autenticità dai tuoi clienti. 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 fondamentale del tuo provider App Check personalizzato, che dovrai scrivere tu stesso.

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

    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 il time-to-live (TTL) per i token App Check emessi dal tuo provider personalizzato passando un oggetto AppCheckTokenOptions a createToken() . È possibile impostare il TTL su qualsiasi valore compreso tra 30 minuti e 7 giorni. Quando si imposta questo valore, tenere presente i seguenti compromessi:

    • Sicurezza: TTL più brevi forniscono una maggiore sicurezza, perché riducono la finestra in cui un token trapelato o intercettato può essere abusato da un utente malintenzionato.
    • Prestazioni: TTL più brevi indicano che l'app eseguirà l'attestazione con maggiore frequenza. 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.

Prossimi passi

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

,

App Check dispone del supporto integrato per diversi provider: DeviceCheck e App Attest sulle piattaforme Apple, Play Integrity e SafetyNet su Android e reCAPTCHA Enterprise nelle app Web ( panoramica ). Si tratta di fornitori ben conosciuti che dovrebbero soddisfare le esigenze della maggior parte degli sviluppatori. Puoi, tuttavia, anche implementare i tuoi provider App Check personalizzati. L'utilizzo di un provider personalizzato è necessario quando:

  • Desideri utilizzare un provider diverso da quelli integrati.

  • Desideri utilizzare i provider integrati in modi non supportati.

  • Desideri verificare i dispositivi che utilizzano piattaforme diverse da Apple, Android e dal Web. Ad esempio, potresti creare provider App Check per sistemi operativi desktop o dispositivi Internet of Things.

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

Panoramica

Per implementare un provider App Check personalizzato, è necessario un ambiente backend sicuro in grado di eseguire Node.js Firebase Admin SDK . 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 valutazione di autenticità, restituisce un token App Check. Gli indicatori specifici che utilizzi come prova di autenticità dipenderanno dal fornitore di terze parti che stai utilizzando o dagli indicatori di tua invenzione, se stai implementando una logica personalizzata.

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

Crea l'endpoint di acquisizione del token

  1. Installa e inizializza l'Admin SDK .

  2. Crea un endpoint accessibile dalla rete in grado di ricevere dati di autenticità dai tuoi clienti. 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 fondamentale del tuo provider App Check personalizzato, che dovrai scrivere tu stesso.

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

    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 il time-to-live (TTL) per i token App Check emessi dal tuo provider personalizzato passando un oggetto AppCheckTokenOptions a createToken() . È possibile impostare il TTL su qualsiasi valore compreso tra 30 minuti e 7 giorni. Quando si imposta questo valore, tenere presente i seguenti compromessi:

    • Sicurezza: TTL più brevi forniscono una maggiore sicurezza, perché riducono la finestra in cui un token trapelato o intercettato può essere abusato da un utente malintenzionato.
    • Prestazioni: TTL più brevi indicano che l'app eseguirà l'attestazione con maggiore frequenza. 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.

Prossimi passi

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