У меня есть угловое приложение JS, которое получает данные из службы REST с сервером sql-сервера. Я разрабатываю и контролирую все 3 части - угловое приложение, сервис отдыха и базу данных.
Я хочу добавить pizazz, сделав это приложение в режиме реального времени, используя Firebase. Мой вопрос: могу ли я сохранить текущую службу отдыха и базу данных по большей части и использовать только базу данных Firebase и библиотеку минимально и только там, где это необходимо для поддержки в реальном времени?
Вы можете сделать это с помощью JSON Web Tokens (JWT). Это возможно, потому что, как вы упомянули в своем вопросе, вы управляете службой REST и SQL-сервером. Таким образом, поскольку сервер доверен, вы можете подключить его к базе данных Firebase, выполнив аутентификацию с помощью JWT.
В результате вы можете управлять учетными записями пользователей так, как вы сейчас делаете, с добавлением "pizzaz" для создания подмножества данных, доступных "в режиме реального времени". Приложения JWT для Firebase могут быть сгенерированы с любой существующей библиотекой генерации JWT, а затем подписаны подписи SHA-256 HMAC.
Аутентификационные серверы
Поскольку вы используете надежный сервер, который подключает вашу собственную базу данных Firebase, вы можете аутентифицировать его несколькими способами:
Использование секретного приложения Firebase: все методы проверки подлинности могут принимать секретное приложение Firebase вместо токена JWT. Это предоставит серверу полный доступ для чтения и записи ко всей базе данных Firebase. Этот доступ никогда не истекает, если он не будет отменен с помощью панели приложений.
Использование безопасного JWT с дополнительным требованием администратора, установленным в true: этот метод предоставит серверу полный доступ для чтения и записи ко всей базе данных Firebase. Этот токен истекает нормально, поэтому важно установить время истечения соответственно.
Использование защищенного JWT, предназначенного для доступа только к частям данных, к которым нужно трогать сервер: этот метод более сложный, но это самый безопасный способ аутентификации сервера, поскольку он позволяет правилам безопасности и Firebase запрещать серверу что-либо делать он не должен, даже если он каким-то образом скомпрометирован.
Источник: Firebase Documentation - https://www.firebase.com/docs/web/guide/login/custom.html
Создание токенов
Для многих платформ имеются библиотеки-помощники, но для этого примера я буду использовать генератор токенов Firebase для Node.js, предоставленный Firebase.
Генератор токенов Firebase для Node.js: https://github.com/firebase/firebase-token-generator-node
Шаг 1. Установите пакет, используя npm или Bower (или скомпилируйте из источника).
Шаг 2. Скопируйте секрет приложения с панели инструментов экземпляра Firebase.
Шаг 3: Создайте токен, используя Node.js, передав секретное приложение Firebase в конструктор FirebaseTokenGenerator, например:
var FirebaseTokenGenerator = require("firebase-token-generator");
var tokenGenerator = new FirebaseTokenGenerator("<YOUR_FIREBASE_SECRET>");
var token = tokenGenerator.createToken({uid: "1", some: "arbitrary", data: "here"});