Проверка токенов проверки приложения из настраиваемой серверной части

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

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

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

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

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

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

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

  • Проверка Проверьте App токенов с помощью Admin SDK в appCheck().verifyToken() метод.

    Если проверка успешна, 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.
});