Firebase is back at Google I/O on May 10! Register now

Implementieren Sie einen benutzerdefinierten App Check-Anbieter

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

App Check bietet integrierte Unterstützung für mehrere Anbieter: DeviceCheck und App Attest auf Apple-Plattformen, Play Integrity und SafetyNet auf Android sowie reCAPTCHA v3 und reCAPTCHA Enterprise in Web-Apps ( Übersicht ). Dies sind bekannte Anbieter, die die Anforderungen der meisten Entwickler erfüllen 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 Anbieter als die integrierten verwenden.

  • Sie möchten die integrierten Anbieter auf nicht unterstützte Weise verwenden.

  • Sie möchten Geräte mit anderen Plattformen als Apple, Android und dem Internet verifizieren. Beispielsweise könnten Sie 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 Back-End-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.

Aus dieser Umgebung stellen Sie einen über das Netzwerk zugänglichen Dienst bereit, der einen Authentizitätsnachweis von Ihren App-Clients empfängt 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 dieses Detail liegt bei Ihnen.

Erstellen Sie den Endpunkt für die Tokenerfassung

  1. Installieren und initialisieren Sie das Admin SDK .

  2. Erstellen Sie einen über das Netzwerk zugänglichen Endpunkt, der Authentizitätsdaten von Ihren Clients empfangen kann. Zum Beispiel mit Cloud Functions:

    // Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken
    exports.fetchAppCheckToken = functions.https.onCall((authenticityData, context) => {
      // ...
    });
    
  3. Fügen Sie die Endpunktlogik hinzu, die die Authentizitätsdaten bewertet. Dies ist die Kernlogik Ihres benutzerdefinierten App Check-Anbieters, die Sie selbst schreiben müssen.

  4. Wenn Sie feststellen, dass der Client authentisch ist, verwenden Sie das Admin SDK, um ein App Check-Token zu erstellen und es und seine Ablaufzeit an den Client zurückzugeben:

    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 (geben Sie beispielsweise einen HTTP-Fehler 403 zurück).

  5. Optional : Legen Sie die Gültigkeitsdauer (TTL) für App Check-Token fest, die von Ihrem benutzerdefinierten Anbieter ausgestellt werden, indem Sie ein AppCheckTokenOptions Objekt an createToken() ü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 mehr Sicherheit, da sie das Fenster verkleinern, in dem ein durchgesickertes oder abgefangenes Token von einem Angreifer missbraucht werden kann.
    • Leistung: Kürzere TTLs bedeuten, dass Ihre App die Bestätigung häufiger durchführt. Da der App-Bestätigungsprozess bei jeder Ausführung Latenz für Netzwerkanforderungen hinzufügt, kann eine kurze TTL die Leistung Ihrer App beeinträchtigen.

    Die Standard-TTL von 1 Stunde ist für die meisten Apps angemessen.

Nächste Schritte

Nachdem Sie die serverseitige Logik Ihres benutzerdefinierten Anbieters implementiert haben, erfahren Sie, wie Sie sie von Ihren Apple- , Android- und Webclients aus verwenden.