App Check bietet integrierte Unterstützung für mehrere Anbieter: DeviceCheck und App Attest auf Apple-Plattformen, Play Integrity und SafetyNet auf Android und reCAPTCHA Enterprise in Web-Apps ( Übersicht ). Hierbei handelt es sich um wohlverstandene Anbieter, die den Bedürfnissen der meisten Entwickler gerecht werden sollten. Sie können jedoch auch Ihre eigenen benutzerdefinierten App Check-Anbieter implementieren. Die Verwendung eines benutzerdefinierten Anbieters ist erforderlich, wenn:
Sie möchten einen anderen als die integrierten Anbieter verwenden.
Sie möchten die integrierten Anbieter auf nicht unterstützte Weise nutzen.
Sie möchten Geräte über andere Plattformen als Apple, Android und das Internet verifizieren. Sie könnten beispielsweise App Check-Anbieter für Desktop-Betriebssysteme oder Internet-of-Things-Geräte erstellen.
Sie möchten Ihre eigenen Verifizierungstechniken auf einer beliebigen Plattform implementieren.
Überblick
Um einen benutzerdefinierten App Check-Anbieter zu implementieren, benötigen Sie eine sichere Backend-Umgebung, die das Node.js Firebase Admin SDK ausführen kann. Dies können Cloud Functions, eine Containerplattform wie Cloud Run oder Ihr eigener Server sein.
In dieser Umgebung stellen Sie einen über das Netzwerk zugänglichen Dienst bereit, der von Ihren App-Clients einen Authentizitätsnachweis erhält und – wenn der Authentizitätsnachweis Ihre Authentizitätsprüfung besteht – ein App-Check-Token zurückgibt. Die spezifischen Indikatoren, die Sie als Echtheitsnachweis verwenden, hängen entweder vom verwendeten Drittanbieter oder von den Indikatoren Ihrer eigenen Erfindung ab, wenn Sie benutzerdefinierte Logik implementieren.
Normalerweise stellen Sie diesen Dienst als REST- oder gRPC-Endpunkt bereit, aber die Einzelheiten bleiben Ihnen überlassen.
Erstellen Sie den Endpunkt für die Token-Erfassung
Erstellen Sie einen über das Netzwerk zugänglichen Endpunkt, der Authentizitätsdaten von Ihren Clients empfangen kann. Beispielsweise mithilfe von Cloud Functions:
// Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken exports.fetchAppCheckToken = functions.https.onRequest((request, response) => { // ... });
Ergänzen Sie die Endpunktlogik, die die Authentizitätsdaten bewertet. Dies ist die Kernlogik Ihres benutzerdefinierten App Check-Anbieters, die Sie selbst schreiben müssen.
Wenn Sie feststellen, dass der Client authentisch ist, erstellen Sie mit dem Admin SDK ein App Check-Token und geben Sie es und seine Ablaufzeit an den Client zurück:
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); });
Wenn Sie die Authentizität des Clients nicht überprüfen können, geben Sie einen Fehler zurück (z. B. einen HTTP 403-Fehler).
Optional : Legen Sie die Gültigkeitsdauer (TTL) für App Check-Tokens fest, die von Ihrem benutzerdefinierten Anbieter ausgegeben werden, indem Sie ein
AppCheckTokenOptions
Objekt ancreateToken()
übergeben. Sie können die TTL auf einen beliebigen Wert zwischen 30 Minuten und 7 Tagen einstellen. Beachten Sie beim Festlegen dieses Werts die folgenden Kompromisse:- Sicherheit: Kürzere TTLs bieten eine höhere Sicherheit, da sie das Zeitfenster verkleinern, in dem ein durchgesickertes oder abgefangenes Token von einem Angreifer missbraucht werden kann.
- Leistung: Kürzere TTLs bedeuten, dass Ihre App häufiger eine Bescheinigung durchführt. Da der App-Bestätigungsprozess bei jeder Ausführung die Latenz von Netzwerkanfragen erhöht, kann sich eine kurze TTL auf die Leistung Ihrer App auswirken.
Die Standard-TTL von 1 Stunde ist für die meisten Apps angemessen.
Nächste Schritte
Nachdem Sie nun die serverseitige Logik Ihres benutzerdefinierten Anbieters implementiert haben, erfahren Sie, wie Sie sie über Ihre Apple- , Android- und Web- Clients verwenden.