在Firebase实时数据库之上创建API层

时间:2017-12-28 19:35:30

标签: rest api firebase firebase-realtime-database aws-lambda

我的Real-Time Firebase数据库中存储了一些数据。我愿意通过REST API向我的B2B客户公开部分数据。

我知道Firebase本身就是一个REST API,但其身份验证机制并不符合我的需求。我愿意我的客户使用HTTP请求标头中传递的简单API密钥来访问API。

总而言之,我需要一个位于Firebase实时数据库顶部的API层,其中包含以下属性:

  • 通过HTTP请求标头中传递的API密钥进行基本身份验证
  • 一些自定义逻辑,确保客户遵守API限制(例如,每天最多请求数)

我唯一能想到的是在AWS lambda中实现这一层,但这听起来也有些偏差。从lambda,我必须访问我的Firebase数据库并提供该数据。这似乎是太多的网络请求; Firebase原生的东西会很棒。

谢谢, 居文。

2 个答案:

答案 0 :(得分:1)

为什么没有一个简单的API,如果它们具有正确的Api密钥,则为原始firebase REST API提供Oauth标记

它会更安全,因为只有您才能制作令牌,因为只有您拥有服务帐户私钥。此外,您还可以省去制作完整REST API的麻烦。 Oauth令牌也会相对较快地到期,因此它比您提供的普通钥匙风险更小

我个人创建了自己的Servlet,如果用户使用id pass combo进行身份验证,用户就会发布他们的数据。

在Servlets中,我使用Firebase提供的默认REST API和我的servlet中生成的Oauth。这样,我可以将来自任何客户端api的所有写入的数据库安全规则设置为false。而且我的服务器上的REST API及其管理员sdk默认忽略安全规则。

答案 1 :(得分:1)

经过一番研究,我认为AWS是API相关功能的最佳平台。

  • Gateway API可让您在几秒钟内设置API界面
  • DynamoDB存储您的API数据;您可以轻松填充此处的数据
  • AWS Lambda允许您在Gateway API和DynamoDB之间编写集成代码

除此之外,该平台还提供开箱即用的这些功能:

  • 创作&处理和验证用于身份验证的API密钥
  • 确保API使用者不超过API使用限制的使用计划

我在寻找的大部分内容都是在这些AWS服务中提供的。