我需要对我的防火墙数据库的特定区域进行restful调用。调用需要作为未经身份验证的用户进行,但我希望使用头部中的API_KEY来保护它,以防止机器人拖网搜索数据。数据库规则将使数据仅供未经身份验证的用户读取。如何只允许HTTP调用使用Firebase中的API键读取数据?
我已经在身份验证请求上找到了本节,但是我需要发出原始的HTTP请求,并且在提供的示例中不能使用受支持的SDK方法。
发布于 2018-11-20 03:32:03
你想做的事是不可能的。实时数据库没有可以由安全规则控制的专用API密钥。您的数据库有一个(遗留的)私钥,有效地使用户能够完全访问数据库中的所有内容。你不应该再用那个了。
另一种身份验证形式是您链接的身份验证。您需要执行OAuth2身份验证才能获得属于Google用户帐户或Firebase用户帐户的令牌。在原始HTTP请求中使用该令牌。
没有其他方法可以指定可以由安全规则控制的对数据库的任何类型的特殊访问。如果不使用上述两种方法中的任何一种,则实际上只能读取安全规则允许完全公开的数据。
发布于 2018-11-20 03:42:33
一种简单的方法,可以指定数据库中特定的不可猜测的路径供此客户端访问,并允许在那里进行公共读/写访问。例如:
{
"rules": {
"content_4287dhicer29pr2sdkuyfweuf": {
".read": true,
".write": true
}
}
}
现在,任何知道这个键content_4287dhicer29pr2sdkuyfweuf
的人都可以读/写它,但是只有那些知道它的人才能读/写它。因为钥匙是很难猜测的,所以如果没有你的帮助,任何人都不太可能找到它。好吧,也许你可以想出一个更好的方法来产生标记,而不是把你的手砸在键盘上。:)
我们在这里所做的实际上是将API密钥嵌入到数据库中的密钥中。因此,它不是在请求中的标题中,而是在URL中。
https://stackoverflow.com/questions/53385689
复制相似问题