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
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) => { // ... });
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.
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).
Facoltativo : imposta la durata (TTL) per i token App Check emessi dal tuo provider personalizzato passando un oggetto
AppCheckTokenOptions
acreateToken()
. 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 .