【问题标题】:Custom API key to protect firebase function endpoints用于保护 firebase 函数端点的自定义 API 密钥
【发布时间】:2021-04-01 13:50:56
【问题描述】:

我需要一个长期有效的 API 密钥生成器,以保护我的 API 端点仅供授权用户(拥有 API 密钥的用户)使用。 所以我认为 Firebase 中没有任何东西可以开箱即用。 我认为每次用户注册并请求 API 时我都应该生成一个 Firestore 文档 钥匙。 然后我将使用文档 ID 作为 API 密钥,我可以在 Cloud Function 中对其进行验证。 像这样的:

const apiKey = req.headers.authorization.split('Bearer ')[1];
const doc = await admin.firestore().collection('apiKeys').doc(apiKey).get();
if (doc.exists) {
  next();
}

所以我的问题是:

  • 这是个好方法吗?
  • 您还有其他建议吗?
  • 它可以扩展吗?

【问题讨论】:

  • 如果您的用户注册,他们就有凭据。他们为什么不直接登录?为什么需要 API 密钥?
  • @ChrisG 因为我正在构建一个用户实际上是服务器的特定服务,我希望他们只编写我将在注册时提供给他们的密钥(==API 密钥)他们的服务器逻辑,因此与我的 API 通信会更容易。
  • 好的,那为什么不硬编码登录名,让他们先登录呢?
  • @ChrisG 我想让它尽可能易于使用,所以他们唯一需要做的就是注册我的服务,然后获取密钥并为每个他们向我的服务器发出请求后,他们还必须添加密钥才能获得响应。就像您作为产品所有者与 Firebase 本身进行沟通一样。

标签: javascript firebase google-cloud-functions api-key


【解决方案1】:

只要您确保您的用户无法获得您的 API 密钥列表,这听起来是一种合理的方法。

它几乎可以在任何数据库上很好地扩展,因为您需要做的就是检查具有给定 ID 的文档是否存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 2018-08-30
    • 2020-06-01
    • 2021-03-15
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多