【发布时间】: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