Firebase volverá a Google I/O el 10 de mayo. Registrarse ahora

Verifica los tokens de la Verificación de aplicaciones en un backend personalizado

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Mediante la Verificación de aplicaciones, puedes proteger recursos de la app que no son de Firebase, como los backends autoalojados. Para ello, deberás hacer lo siguiente:

  • Modifica el cliente de la app para que envíe un token de Verificación de aplicaciones junto con cada solicitud al backend, como se describe en las páginas de iOS+, Android y la Web.
  • Modifica tu backend para que requiera un token válido de Verificación de aplicaciones con cada solicitud, como se describe en esta página.

Antes de comenzar

Si aún no lo has hecho, instala el SDK de Admin de Node.js.

Verifica los tokens

Agrega lógica a los extremos de la API a fin de verificar los tokens de Verificación de aplicaciones en tu backend para que haga lo siguiente:

  • Compruebe que cada solicitud incluya un token de la Verificación de aplicaciones.

  • Verifique el token de la Verificación de aplicaciones mediante el método appCheck().verifyToken() del SDK de Admin.

    Si la verificación se realiza de forma correcta, verifyToken() muestra el token de la Verificación de aplicaciones decodificado. La verificación correcta indica que el token se originó de una app que pertenece a tu proyecto de Firebase.

Rechaza cualquier solicitud que no cumpla con cualquiera de estos dos requisitos. Por ejemplo, si usas middleware de Express.js, haz lo siguiente:

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