Verifizieren Sie App Check-Token von einem benutzerdefinierten Back-End

Sie können die Nicht-Firebase-Ressourcen Ihrer App, wie z. B. selbst gehostete Back-Ends, mit App Check schützen. Dazu müssen Sie die beiden folgenden Schritte ausführen:

  • Ändern Sie Ihren App-Client so, dass er zusammen mit jeder Anfrage ein App-Check-Token an Ihr Backend sendet, wie auf den Seiten für iOS+ , Android und web beschrieben.
  • Ändern Sie Ihr Back-End so, dass bei jeder Anfrage ein gültiges App Check-Token erforderlich ist, wie auf dieser Seite beschrieben.

Bevor Sie beginnen

Wenn Sie das Node.js Admin SDK noch nicht installiert haben, tun Sie dies jetzt.

Token überprüfen

Um App Check-Token in Ihrem Back-End zu verifizieren, fügen Sie Logik zu Ihren API-Endpunkten hinzu, die Folgendes bewirkt:

  • Stellen Sie sicher, dass jede Anfrage ein App Check-Token enthält.

  • Verifizieren Sie das App Check-Token mit der appCheck().verifyToken() Methode des Admin SDK.

    Wenn die Überprüfung erfolgreich ist, verifyToken() das entschlüsselte App-Check-Token zurück. Eine erfolgreiche Überprüfung zeigt an, dass das Token von einer App stammt, die zu Ihrem Firebase-Projekt gehört.

Jede Anforderung ablehnen, die eine der beiden Prüfungen nicht besteht. Beispiel: Verwendung von Express.js-Middleware:

const express = require('express');
const app = express();

const firebaseAdmin = require('firebase-admin');
const firebaseApp = firebaseAdmin.initializeApp();

const appCheckVerification = async (req, res, next) => {
    const appCheckToken = req.header('X-Firebase-AppCheck');

    if (!appCheckToken) {
        res.status(401);
        return next('Unauthorized');
    }

    try {
        const appCheckClaims = await firebaseAdmin.appCheck().verifyToken(appCheckToken);

        // If verifyToken() succeeds, continue with the next middleware
        // function in the stack.
        return next();
    } catch (err) {
        res.status(401);
        return next('Unauthorized');
    }
}

app.get('/yourApiEndpoint', [appCheckVerification], (req, res) => {
    // Handle request.
});