欢迎参加我们将于 2022 年 10 月 18 日举办的 Firebase 峰会(线上线下同时进行),了解 Firebase 如何帮助您加快应用开发速度、满怀信心地发布应用并在之后需要时轻松地扩大应用规模。立即报名

从自定义后端验证 App Check 令牌

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

您可以使用 App Check 保护应用的非 Firebase 资源,例如自托管后端。为此,您需要执行以下两项操作:

  • iOS+Androidweb页面中所述,修改您的应用程序客户端以将 App Check 令牌与每个请求一起发送到您的后端。
  • 如本页所述,修改您的后端以在每个请求中都需要一个有效的 App Check 令牌。

在你开始之前

如果您尚未安装Node.js Admin SDK ,请安装。

验证令牌

要在后端验证 App Check 令牌,请将逻辑添加到执行以下操作的 API 端点:

  • 检查每个请求是否包含 App Check 令牌。

  • 使用 Admin SDK 的appCheck().verifyToken()方法验证 App Check 令牌。

    如果验证成功, verifyToken()返回解码后的 App Check 令牌。成功验证表明令牌来自属于您的 Firebase 项目的应用。

拒绝任何一项检查失败的请求。例如,使用 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.
});