Catch up on everthing we announced at this year's Firebase Summit. Learn more

Implementa un provider di App Check personalizzato

App check è dotato di supporto per i diversi fornitori: DeviceCheck e App Attest su piattaforme Apple, SafetyNet su Android, o reCAPTCHA v3 in applicazioni web ( panoramica ). Questi sono fornitori ben conosciuti che dovrebbero soddisfare le esigenze della maggior parte degli sviluppatori. Tuttavia, puoi anche implementare i tuoi provider di App Check personalizzati. L'utilizzo di un provider personalizzato è necessario quando:

  • Desideri utilizzare un provider diverso da DeviceCheck o App Attest su Apple, SafetyNet su Android o reCAPTCHA nelle app web.

  • Vuoi verificare i dispositivi che utilizzano piattaforme diverse da Apple, Android e Web. Ad esempio, puoi creare provider di 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 App Controllare provider personalizzato, è necessario un ambiente di back-end sicuro in grado di eseguire il Node.js Firebase Admin SDK . Questo può essere funzioni cloud, una piattaforma contenitore come Nuvola Run , o il proprio 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à dipenderanno dal provider di terze parti che stai utilizzando o dagli indicatori di tua invenzione, se stai implementando una logica personalizzata.

Di solito, esponi questo servizio come endpoint REST o gRPC, ma questo dettaglio dipende da te.

Crea l'endpoint di acquisizione del token

  1. Installare e inizializzare 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.onCall((authenticityData, context) => {
      // ...
    });
    
  3. Aggiungere alla logica dell'endpoint che valuta i dati di autenticità. Questa è la logica principale del tuo provider App Check personalizzato, che dovrai scrivere tu stesso.

  4. Se determini che il client è autentico, utilizza l'SDK Admin per coniare un token App Check e restituirlo con la sua 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. Opzionale: Impostare il time-to-live (TTL) per App Controlla i gettoni emessi dal provider personalizzato passando un AppCheckTokenOptions opporsi al 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: TTL più brevi forniscono una sicurezza maggiore, perché riduce la finestra in cui un token trapelato o intercettato può essere abusato da un utente malintenzionato.
    • Prestazioni: TTL più brevi significano che la tua app eseguirà l'attestazione più frequentemente. Poiché il processo di attestazione dell'app aggiunge latenza alle richieste di rete ogni volta che viene eseguito, un breve TTL può influire sulle prestazioni della tua app.

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

Prossimi passi

Ora che hai implementato logica server-side del provider personalizzato, imparare a usarlo dal tuo di Apple , Android e web client.