Подтвердить что ты не робот

Как вы аутентифицируете сервер для Firebase?

У меня есть приложение, написанное на Firebase. Правила безопасности и код на стороне клиента недостаточны для работы моего приложения. Мне нужно подключить сервер для выполнения нескольких задач:

  • Очистка денормализованных данных, которые сложны для очистки onDisconnect обработчики
  • Создание дополнительных индексов моих данных, выходящих за рамки того, что я могу сделать с queries
4b9b3361

Ответ 1

Обновлено (20160611): если вы создали свой проект на https://firebase.google.com, шаги доступа к базе данных с сервера различны. См. Этот ответ: Возможно ли выполнить проверку маркеров на стороне сервера в Firebase 3?

Есть два способа, которыми вы можете это сделать: создать токен аутентификации сервера или использовать секрет Firebase.

Создание маркера сервера Вы можете использовать те же библиотеку генераторов токенов для вашего языка/платформы сервера. Node.js и серверы Java работают лучше всего.

Создайте токен с предварительно выбранным uid. Если вы пишете сервер Node.js, код может выглядеть примерно так:

var FirebaseTokenGenerator = require("firebase-token-generator");
var tokenGenerator = new FirebaseTokenGenerator("<your-firebase-secret>");
var token = tokenGenerator.createToken(
   {uid: "my-awesome-server"}, 
   { expires: <far_into_the_future_seconds> });

Используйте токен для аутентификации вашего клиента. Здесь более Node.js код:

var ref = new Firebase("https://<your-firebase>.firebaseio.com/");
ref.authWithCustomToken(token, function(error, authData) {
  ...
});

Если нет клиента для вашего языка сервера, например. PHP, используйте токен для ваших запросов REST в качестве параметра auth.

Обновите свои правила безопасности, чтобы предоставить специальные разрешения вашему серверу, идентифицированные с помощью uid, как это простое правило, которое позволяет читать доступ ко всей Firebase

{
    "rules": {
        ".write": false,
        ".read": "auth.uid === 'my-awesome-server'"
    }
}

Получите доступ ко всем данным, сделайте потрясающие вещи.

Преимущества

  • Это официально рекомендованный Firebase способ аутентификации вашего сервера.
  • Ваш сервер будет уважать правила проверки.
  • Сервер - это еще один пользователь. Вы можете использовать правила безопасности для обеспечения мелкозернистого доступа к вашим данным.
  • Поскольку доступ имеет мелкозернистую структуру, маловероятно, что ошибка на вашем сервере приведет к повреждению, например, удалите ваш root Node.

Секрет Firebase

Если вы такой разработчик, который любит жить на грани, и набирает sudo при падении шляпы, вы может также аутентифицироваться, используя прямую тайну Firebase.

Но серьезно, не делайте этого. Это опасно.

Причины этого не делать

  • Точно так же, как слепо использовать sudo, это невероятно опасно.
  • Ваш сервер не будет соблюдать ваши правила проверки.
  • Полный доступ к вашему серверу /писать доступ к вашей Firebase. Если у него есть достаточно уродливая ошибка, может удалить или испортить данные, которые не имеют доступа к бизнесу.
  • Ваш секрет заканчивается в большем количестве мест (потенциально в журналах исходящих запросов, и т.д). Вы получаете больше риска, если он выйдет.