Firebase 云函数 HTTP 基本身份验证

5
我需要创建一个API端点,返回PDF文件。这个端点旨在被Twilio访问,并与他们的传真API一起使用。然而,唯一使用身份验证的方法是HTTP基本身份验证
使用express-basic-auth npm包似乎很容易实现。然而,我不确定我的技术堆栈的后勤支持情况。我使用Firebase、Firestore和Cloud Functions。
我如何安全地在Cloud Functions中实现HTTP基本身份验证?我不能使用Firebase的Auth产品,因为像我说的那样,另一个API需要与这个端点交互,而不是一个实际的人。我将有许多内部用户名和密码,我应该将它们存储在数据库Firestore中吗?在函数中的数组中硬编码?
最终问题是,我应该将用户名密码存储在Firestore文档中吗?

你解决了这个问题吗? - GMan
2个回答

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答案


2
根据Firebase文档,Google支持在他们的堆栈中使用express应用程序。因此,您可以按照{{link2:express-basic-auth软件包文档}}中所述创建您的中间件:
const app = require('express')()
const basicAuth = require('express-basic-auth')
 
app.use(basicAuth({
    users: { 'admin': 'supersecret' }
}))

在您的云函数中按照这里所描述的方式使用该应用程序:
exports.api = functions.https.onRequest(app);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接