Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Implementa un provider di App Check personalizzato

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

App Check offre supporto integrato per diversi provider: DeviceCheck e App Attest sulle piattaforme Apple, Play Integrity e SafetyNet su Android e reCAPTCHA v3 e reCAPTCHA Enterprise nelle app Web ( panoramica ). Si tratta di fornitori ben noti 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:

  • Si desidera utilizzare un provider diverso da quelli integrati.

  • Si desidera utilizzare i provider integrati in modi non supportati.

  • Vuoi verificare i dispositivi utilizzando piattaforme diverse da Apple, Android e il Web. Ad esempio, puoi creare provider App Check per sistemi operativi desktop o dispositivi Internet of Things.

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

Panoramica

Per implementare un provider App Check personalizzato, è necessario un ambiente back-end sicuro in grado di eseguire Node.js Firebase Admin SDK . Può trattarsi di Cloud Functions, una piattaforma container come Cloud Run o il tuo server.

Da questo ambiente, fornirai un servizio accessibile dalla rete che riceve la prova di autenticità dai tuoi client dell'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à dipenderanno dal provider 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 Admin SDK .

  2. Crea un endpoint accessibile dalla rete in grado di 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.onCall((authenticityData, context) => {
      // ...
    });
    
  3. Aggiungi alla logica dell'endpoint che valuta i dati di autenticità. Questa è la logica di base 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 e la relativa 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 puoi 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 si imposta questo valore, prestare attenzione ai seguenti compromessi:

    • Sicurezza: i 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 .