我看过几个地方,包括这个 post和 Firebase 面板
有没有办法使用这些 api 来保护这些端点,使用您为每个使用您的云功能的客户端创建的 api key ?
我能够阻止每个对浏览器 key 施加限制的人,但我想创建一个新的 api key ,并将其用作为各种客户端验证我的端点的一种方式。
创建新的 api key ,并使用 that as a parameter in my query不起作用(如果我做错了什么,现在不要)
有办法吗?
最佳答案
选项 1:在函数内处理身份验证
https://github.com/firebase/functions-samples/tree/master/authorized-https-endpoint
在上面进行调整以使用存储在 firestore 中的客户端/ key
选项 2:使用 API Gateway
- Google Cloud Endpoints (还没有直接支持功能,需要实现一个 proxy )
- Apigee (成本更高,可能超出您的需要)
- Azure API Management (较低的入门成本 + 易于作为托管在 Azure 外部的服务的门面实现)
- 还有更多..
上述网关可能最适合您的用例,因为前两个网关可以让您将所有内容都保留在 Google 中,尽管具有更高的复杂性/成本——希望 Endpoints 能尽快获得对功能的支持。 Azure 意味着您的架构的一部分在 Google 之外,但看起来是一种实现您的目标的简单方法(每个客户端的 api key 用于您的 google 云/firebase 功能)
这是实现 Azure API 管理的一个很好的演练:
https://koukia.ca/a-microservices-implementation-journey-part-4-9c19a16385e9
关于Firebase Cloud Functions 使用 API key 保护 HTTPS 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52908611/