Implementieren Sie einen benutzerdefinierten App-Check-Anbieter

App prüfen hat eine eingebaute Unterstützung für mehrere Anbieter: DeviceCheck auf iOS, SafetyNet auf Android oder reCAPTCHA v3 in Web - Anwendungen ( Übersicht ). Dies sind gut verstandene Anbieter, die die Anforderungen der meisten Entwickler erfüllen sollten. Sie können jedoch auch eigene benutzerdefinierte App-Check-Anbieter implementieren. Die Verwendung eines benutzerdefinierten Anbieters ist erforderlich, wenn:

  • Sie möchten einen anderen Anbieter als DeviceCheck auf iOS, SafetyNet auf Android oder reCAPTCHA in Web-Apps verwenden.

  • Sie möchten Geräte überprüfen, die andere Plattformen als iOS, Android und das Web verwenden. Sie können beispielsweise App Check-Anbieter für Desktop-Betriebssysteme oder Internet-of-Things-Geräte erstellen.

  • Sie möchten Ihre eigenen Verifikationstechniken auf jeder Plattform implementieren.

Überblick

Um eine benutzerdefinierte App überprüfen Provider zu implementieren, müssen Sie eine sichere Back - End - Umgebung, die das Node.js laufen kann Firebase Admin SDK . Dies kann Cloud - Funktionen, eine Containerplattform wie Cloud - Run oder einen eigenen Server.

In dieser Umgebung stellen Sie einen über das Netzwerk zugänglichen Dienst bereit, der einen Echtheitsnachweis von Ihren App-Clients empfängt und – wenn der Echtheitsnachweis 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 Token-Erfassungsendpunkt

  1. Installieren und das Admin SDK initialisieren .

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

    // Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken
    exports.fetchAppCheckToken = functions.https.onCall((authenticityData, context) => {
      // ...
    });
    
  3. Fügen Sie der 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 prägen 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 (z. B. einen HTTP 403-Fehler).

  5. Optional: Legen Sie die Time-to-Live (TTL) für Token App überprüfen , indem Sie Ihre benutzerdefinierten Anbieter ausgestellt durch eine Weitergabe AppCheckTokenOptions einzuwenden createToken() . 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 verringern, 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 zu 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

Jetzt, wo Sie Ihre benutzerdefinierten Provider serverseitige Logik implementiert haben, lernen , wie es zu benutzen von Ihrem iOS , Android und Web - Clients.