Benutzerdefinierten App Check-Anbieter implementieren

App Check bietet integrierte Unterstützung für mehrere Anbieter: DeviceCheck und App Attest auf Apple-Plattformen, Play Integrity auf Android und reCAPTCHA Enterprise in Webanwendungen (Übersicht). Diese Anbieter sind gut bekannt und sollten die Anforderungen der meisten Entwickler erfüllen. Sie können jedoch auch eigene benutzerdefinierte App Check Anbieter implementieren. Die Verwendung eines benutzerdefinierten Anbieters ist in folgenden Fällen erforderlich:

  • 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 Web überprüfen. Sie können beispielsweise App Check Anbieter für Desktop-Betriebssysteme oder IoT-Geräte (Internet of Things) erstellen.

  • Sie möchten eigene Überprüfungstechniken auf einer beliebigen Plattform implementieren.

Übersicht

Um einen benutzerdefinierten App Check Anbieter zu implementieren, benötigen Sie eine sichere Backend Umgebung, in der das Node.js Firebase Admin SDK ausgeführt werden kann. Dies kann 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 Authentizitätsnachweis verwenden, hängen entweder vom Drittanbieter ab, den Sie verwenden, oder von Ihren eigenen Indikatoren, wenn Sie benutzerdefinierte Logik implementieren.

Normalerweise stellen Sie diesen Dienst als REST- oder gRPC-Endpunkt bereit, aber diese Entscheidung liegt bei Ihnen.

Endpunkt für den Tokenabruf erstellen

  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. Beispiel mit Cloud Functions:

    // Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken
    exports.fetchAppCheckToken = functions.https.onRequest((request, response) => {
      // ...
    });
    
  3. Fügen Sie der Endpunktlogik hinzu, dass die Authentizitätsdaten bewertet werden. 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 zusammen mit der 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 bestätigen können, geben Sie einen Fehler zurück (z. B. einen HTTP-Fehler 403).

  5. Optional: Legen Sie die Gültigkeitsdauer (Time-to-Live, TTL) für App Check Tokens 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 festlegen. Beachten Sie beim Festlegen dieses Werts die folgenden Kompromisse:

    • Sicherheit: Kürzere TTLs bieten mehr Sicherheit, da sie das Zeitfenster verringern, in dem ein durchgesickertes oder abgefangenes Token von einem Angreifer missbraucht werden kann.
    • Leistung: Bei kürzeren TTLs führt Ihre App häufiger eine Attestierung durch. Da der App-Bestätigungsprozess bei jeder Ausführung die Latenz von Netzwerkanfragen erhöht, 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 Web Clients aus verwenden.