Firebase 云函数 HTTP 基本身份验证
Firebase Cloud Functions HTTP Basic Auth
我需要创建一个 API 端点,returns 个 PDF。此端点旨在供 Twilio 访问以用于其传真 API。但是,通过身份验证执行此操作的唯一方法是使用 HTTP Basic Auth.
使用 express-basic-auth npm 包似乎很容易做到这一点。但是,我不确定我的技术堆栈的物流。我使用 Firebase、Firestore 和 Cloud Functions。
如何使用 Cloud Functions 安全地实施此 HTTP 基本身份验证?我不能像我说的那样使用 Firebase 的 Auth 产品 bc,另一个 API 需要与这个端点交互,而不是一个真实的人。我将有许多内部用户名和密码,我应该将它们存储在数据库 Firestore 中吗?在函数中将其硬编码到数组中?
最终的问题是,我应该 将用户名密码存储在 Firestore 文档中吗?
根据this Firebase documentation, Google supports express apps in their stack. Thus you can simply create your middleware as explained in the 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);
您还可以添加中间件功能,而不是使用 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
我需要创建一个 API 端点,returns 个 PDF。此端点旨在供 Twilio 访问以用于其传真 API。但是,通过身份验证执行此操作的唯一方法是使用 HTTP Basic Auth.
使用 express-basic-auth npm 包似乎很容易做到这一点。但是,我不确定我的技术堆栈的物流。我使用 Firebase、Firestore 和 Cloud Functions。
如何使用 Cloud Functions 安全地实施此 HTTP 基本身份验证?我不能像我说的那样使用 Firebase 的 Auth 产品 bc,另一个 API 需要与这个端点交互,而不是一个真实的人。我将有许多内部用户名和密码,我应该将它们存储在数据库 Firestore 中吗?在函数中将其硬编码到数组中?
最终的问题是,我应该 将用户名密码存储在 Firestore 文档中吗?
根据this Firebase documentation, Google supports express apps in their stack. Thus you can simply create your middleware as explained in the 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);
您还可以添加中间件功能,而不是使用 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