【问题标题】:Firebase Cloud Functions HTTP Basic AuthFirebase Cloud Functions HTTP 基本身份验证
【发布时间】:2020-09-17 10:41:29
【问题描述】:

我需要创建一个返回 PDF 的 API 端点。此端点旨在由 Twilio 访问以与他们的传真 API 一起使用。但是,通过身份验证执行此操作的唯一方法是使用 HTTP Basic Auth

使用express-basic-auth npm 包似乎很容易做到这一点。但是,我不确定我的技术堆栈的物流。我使用 Firebase、Firestore 和 Cloud Functions。

如何使用 Cloud Functions 安全地实施此 HTTP 基本身份验证?我不能像我说的那样使用 Firebase 的 Auth 产品,另一个 API 需要与这个端点交互,而不是一个真实的人。我会有很多内部用户名和密码,我应该将它们存储在数据库 Firestore 中吗?将其硬编码到函数中的数组中?

最终的问题是,是否应该将用户名密码存储在 Firestore 文档中?

【问题讨论】:

  • 你解决了吗?

标签: node.js firebase google-cloud-firestore google-cloud-functions basic-authentication


【解决方案1】:

根据this Firebase documentation,Google 在其堆栈中支持快速应用程序。因此,您可以按照package documentation of express-basic-auth 中的说明简单地创建中间件:

const app = require('express')()
const basicAuth = require('express-basic-auth')
 
app.use(basicAuth({
    users: { 'admin': 'supersecret' }
}))

并按照here 的描述在您的云功能中使用该应用程序:

exports.api = functions.https.onRequest(app);

【讨论】:

    【解决方案2】:

    您还可以添加中间件功能,而不是使用 express 应用

    const applyMiddleware = handler => (req, res) => {
      return auth(req, res, () => {
        return handler(req, res)
      })
    }
    exports.successTest = functions.https.onRequest(applyMiddleware((req, res) => res.send({ success: true })))
    

    要查看没有中间件的简单解决方案,请参阅SO answer

    【讨论】:

      猜你喜欢
      • 2018-07-09
      • 1970-01-01
      • 1970-01-01
      • 2019-04-04
      • 1970-01-01
      • 2019-04-19
      • 2021-03-21
      • 2011-11-12
      • 2011-05-05
      相关资源
      最近更新 更多