我正在尝试使用JWT对领域云进行身份验证。我使用Firebase作为身份验证服务,并试图创建一个Google函数来生成JWT。我使用终端命令"ssh-keygen“生成私钥和公钥。王国的JWT教程建议使用以下代码行来读取密钥文件:
const key = fs.readFileSync('./functions/id_rsa', 'utf8'); 我将私钥复制到项目中,将上面的代码指向文件,但当我部署Google函数时,收到了以下错误消息:
functionsmyAuthFunction(us-⚠1):部署错误。函数在加载用户代码时失败。错误信息:无法加载文件index.js中的代码。代码中有语法错误吗?详细的堆栈跟踪:错误: ENOENT:没有这样的文件或目录,打开‘./function/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教程
发布于 2020-02-03 16:39:44
试着只传递./id_rsa或id_rsa。我相信路径根目录是index.js文件所在的位置。
https://stackoverflow.com/questions/55154976
复制相似问题