Vérifier les jetons App Check à partir d'un backend personnalisé

Vous pouvez protéger les ressources non Firebase de votre application, telles que les backends auto-hébergés, avec App Check. Pour ce faire, vous devrez effectuer les deux opérations suivantes :

  • Modifier votre client d'application pour envoyer un jeton App Vérifiez avec chaque demande de votre back - end, comme décrit dans les pages pour iOS + , Android et Web .
  • Modifiez votre backend pour exiger un jeton App Check valide avec chaque demande, comme décrit sur cette page.

Avant que tu commences

Si vous ne l' avez pas déjà installé le Node.js Administrateur SDK , faire.

Vérifier les jetons

Pour vérifier les jetons App Check sur votre backend, ajoutez une logique à vos points de terminaison d'API qui effectue les opérations suivantes :

  • Vérifiez que chaque demande inclut un jeton App Check.

  • Vérifiez la vérification App jeton à l' aide du SDK Admin appCheck().verifyToken() méthode.

    Si la vérification réussit, verifyToken() retourne l'App décodé Vérifier jeton. Une vérification réussie indique que le jeton provient d'une application appartenant à votre projet Firebase.

Rejetez toute demande qui échoue à l'une ou l'autre des vérifications. Par exemple, en utilisant le middleware Express.js :

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.
});