App Check supporta già diversi fornitori: DeviceCheck e AppAttest 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 fornitori App Check personalizzati. L'utilizzo di un provider personalizzato è necessario quando:
Vuoi utilizzare un provider diverso da quelli integrati.
Vuoi utilizzare i fornitori integrati in modi non supportati.
Vuoi verificare i dispositivi che utilizzano piattaforme diverse da Apple, Android e il web. Ad esempio, puoi creare fornitori App Check per sistemi operativi desktop o per dispositivi di internet delle cose.
Vuoi 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 Firebase Admin SDK di Node.js. Può essere Cloud Functions, una piattaforma di container come Cloud Run o il tuo server.
In questo ambiente, fornirai un servizio accessibile in rete che riceve la prova dell'autenticità dai client dell'app e, se la prova dell'autenticità supera la tua valutazione dell'autenticità, restituisce un token App Check. Gli indicatori specifici che utilizzi come prova dell'autenticità dipendono dal fornitore di terze parti che utilizzi 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
Crea un endpoint accessibile tramite rete che possa ricevere i 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) => { // ... });
Aggiungi alla logica dell'endpoint che valuta i dati sull'autenticità. Si tratta della logica di base del tuo fornitore App Check personalizzato, che dovrai scrivere autonomamente.
Se stabilisci che il client è autentico, utilizza Admin SDK per emettere un token App Check e restituirlo al client insieme alla relativa data 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, un errore HTTP 403).
Facoltativo: imposta la durata (TTL) per i token App Check emessi dal tuo fornitore personalizzato passando un oggetto
AppCheckTokenOptions
acreateToken()
. 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 divulgato o intercettato può essere utilizzato in modo improprio da un malintenzionato.
- Prestazioni: TTL più brevi significa che la tua app eseguirà l'attestazione più spesso. Poiché la procedura di attestazione dell'app aggiunge latenza alle richieste di rete ogni volta che viene eseguita, un TTL breve può influire sul rendimento della tua 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 provider personalizzato, scopri come usarla dai client Apple, Android e web.