【问题标题】:secure path for serviceAccountKey.json for a Firebase project in Google App Engine Node.js appGoogle App Engine Node.js 应用中 Firebase 项目的 serviceAccountKey.json 的安全路径
【发布时间】:2017-07-16 03:57:16
【问题描述】:

我有一个 Firebase 项目,用户与之共享一些内容,包括媒体和文本。为了让 Facebook 正确处理链接,共享内容必须有一个预先填充的页面(在服务器端动态创建,而不是在使用 Firebase JS API 的客户端上)。

因此,我决定使用 Google App Engine (GAE) 将这些内容作为 URL 提供,例如 somedomain.com/?content=hfe84gfjy45xs

var admin = require("firebase-admin");

// Fetch the service account key JSON file contents
var serviceAccount = require("path/to/serviceAccountKey.json");

// Initialize the app with a null auth variable, limiting the server's access
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://databaseName.firebaseio.com",
  databaseAuthVariableOverride: null
});

path/to/serviceAccountKey.json 文件放在项目文件夹中是否安全? 我必须将文件放入 Google Cloud Storage 实例吗?

提前致谢。

【问题讨论】:

  • 您也忽略了 serviceAccountKey.json?如果是,您如何在生产中使用它?

标签: node.js facebook security google-app-engine firebase


【解决方案1】:

express-firebase 有一个很好的例子来实现这一点。

  1. 将您的 serviceAccountKey.json 添加到您的项目中,但在您的 .gitignore 中引用该文件路径,因此不会将其签入源代码管理。

  2. 创建一个 .env 变量,它是您的 serviceAccountKey.json 的路径:

    FIREBASE_SERVICE_ACCOUNT_KEY_PATH=./service-account-key.json
    

    请参阅dotenv 了解在 JS 应用中加载环境变量。

  3. 从那里,您可以像这样简单地引用您的服务帐户文件并将其传递给cert 函数:

    const serviceAccount = require(process.env.FIREBASE_SERVICE_ACCOUNT_KEY_PATH);
    
    admin.credential.cert(serviceAccount)
    

【讨论】:

  • 我必须将文件 serviceAccountKey.json.env 放入 .gitignore 文件中吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 2012-11-15
  • 1970-01-01
  • 2020-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多