我正在尝试使用JWTS对境界进行身份验证。我正在使用Firebase作为身份验证服务,并正在尝试创建Google Cloud功能来生成JWT。我使用终端命令" ssh-keygen"生成了私钥和公共密钥。领域的JWT教程建议以下代码行以读取密钥文件:
const key = fs.readFileSync('./functions/id_rsa', 'utf8');
我将私有密钥复制到项目上,将上述代码指向文件,但是当我部署Google Cloud函数时,我收到以下错误消息:
⚠函数[myauthfunction(us-central1)]:部署错误。功能 加载用户代码失败。错误消息:文件索引中的代码 无法加载。您的代码中是否存在语法错误?详细的堆栈 跟踪:错误:Enoent:没有这样的文件或目录,打开 './functions/id_rsa'
我的项目结构如下:图片
我试图在领域的论坛上询问,但我没有得到太多帮助。他们建议的整个云功能是:
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云功能如何在项目中读取我的私钥文件?公共密钥存储在我的领域云仪表板中,以用于特定实例。
来源:领域云JWT Firebase教程
尝试仅通过./id_rsa
或id_rsa
。我相信路径根是index.js文件所在的位置。