Firebase Cloud Functions通过API密钥保护HTTPS端点

时间:2018-10-20 18:05:11

标签: firebase http authentication google-cloud-functions

我已经看过几个地方,包括这个post和火力场面板

enter image description here

是否没有办法使用这些api通过每个使用云功能的客户端创建的api密钥来保护这些端点?

我能够阻止每个限制浏览器密钥的人,但是我想创建一个新的api密钥,并将其用作对各种客户端验证我的端点的一种方式。

创建新的api密钥并使用that as a parameter in my query无效(如果我做错了,现在就不要了)

enter image description here

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

选项1:在功能内处理身份验证

  

https://github.com/firebase/functions-samples/tree/master/authorized-https-endpoint

在上面进行调整以使用存储在Firestore中的客户端/密钥


选项2:使用API Gateway

以上网关可能是最适合您的用例的,因为前两个网关可以让您将所有内容保留在Google内,尽管具有更高的复杂性/成本-希望Endpoints将很快获得对功能的支持。 Azure将意味着将您的体系结构的一部分包含在Google之外,但看起来像是一种轻松实现目标的简单方法(Google云/ firebase函数的每个客户端api键)

这是实现Azure API管理的一个很好的演练:

  

https://koukia.ca/a-microservices-implementation-journey-part-4-9c19a16385e9

答案 1 :(得分:0)

就Firebase和GCP而言,没有实现您所追求的目标,客户是您的特定业务问题。

您可以通过提供的少量信息解决此问题的一种方法;

  1. 您需要在某个地方存储客户端列表及其API密钥(我将使用firestore)

  2. 对于要使用客户端特定的API密钥保护的端点,可以包括检查以确认标头存在并且还存在于Firestore客户端记录中。

注意事项:

  1. 根据您的预期流量负载和要添加的Firestore读取数量,您可能需要仔细检查这种解决方案是否适合您的预算。
  2. API密钥类型解决方案是您唯一必须选择的选择吗?使用https://github.com/firebase/firebaseui-web可能会使您走得很远,而无需额外读取数据库就可以对用户进行功能检查。如果沿着这条路走,大多数用户注册/电子邮件/帐户创建逻辑已准备就绪。 https://firebase.google.com/docs/auth/web/password-auth#before_you_begin

好奇地看看其他一些Firebase用户的建议。