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

Проверка токенов App Check из пользовательского бэкенда

Вы можете защитить ресурсы вашего приложения, не относящиеся к Firebase, например, собственные серверные части, с помощью проверки приложений. Для этого вам нужно будет выполнить оба следующих действия:

  • Измените клиент приложения, чтобы отправлять токен проверки приложения вместе с каждым запросом на серверную часть, как описано на страницах для iOS+ , Android и Интернета .
  • Измените серверную часть, чтобы при каждом запросе требовался действительный токен проверки приложения, как описано на этой странице.

Прежде чем вы начнете

Если вы еще не установили Node.js Admin SDK , сделайте это.

Проверить токены

Чтобы проверить токены проверки приложений на серверной части, добавьте в конечные точки API логику, которая выполняет следующие действия:

  • Убедитесь, что каждый запрос включает токен проверки приложения.

  • Проверьте токен проверки приложения, используя метод appCheck().verifyToken() пакета Admin SDK.

    Если проверка прошла успешно, verifyToken() возвращает декодированный токен проверки приложения. Успешная проверка означает, что токен был получен из приложения, принадлежащего вашему проекту 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.
});