Аутентификация Firebase для Realm Cloud с использованием JWT и функции Google Cloud
Я пытаюсь использовать JWT для аутентификации в Realm Cloud. Я использую Firebase в качестве службы аутентификации и пытаюсь создать облачную функцию Google для генерации JWT. Я сгенерировал закрытый и открытый ключи, используя команду терминала "ssh-keygen". В руководстве Realm по JWT предложена следующая строка кода для чтения файла ключа:
const key = fs.readFileSync('./functions/id_rsa', 'utf8');
Я скопировал закрытый ключ в проект, указал приведенный выше код на файл, но при развертывании облачной функции Google я получил следующее сообщение об ошибке:
⚠ functions [myAuthFunction (us-central1)]: ошибка развертывания. Сбой функции при загрузке кода пользователя. Сообщение об ошибке: Код в файле index.js не может быть загружен. Есть ли синтаксическая ошибка в вашем коде? Подробная трассировка стека: Ошибка: ENOENT: нет такого файла или каталога, откройте "./functions/id_rsa"
Моя структура проекта выглядит следующим образом: Изображение
Я пытался задать вопрос на форумах Realm, но мне не оказали особой помощи. Целая облачная функция, которую они предложили:
const functions = require("firebase-functions");
const jwt = require('jsonwebtoken');
const fs = require('fs');
const key = fs.readFileSync(’pathToMyPrivateKeyFile');
exports.myAuthFunction = functions.https.onCall((data, context) => {
const uid = context.auth.uid
const payload = { userId: uid }
const token = jwt.sign(payload, { key: key, passphrase: "your-passphrase" }, { algorithm: 'RS256'}),
return { token:token }
});
Таким образом, как функция облака Google может читать мой файл закрытого ключа в моем проекте? Открытый ключ хранится на панели инструментов моего Realm Cloud для конкретного экземпляра.
Источники: руководство по Realm Cloud JWT Firebase
0 ответов
Попробуйте пройти просто ./id_rsa
или id_rsa
. Я считаю, что корень пути находится там, где находится файл index.js.