Authentication 使用Firebase密码通过HTTP POST请求进行Firebase服务器端身份验证
根据firebase文档,firebase接受所有REST API类型进行身份验证 换句话说,PUT/POST/GET请求都可以在HTTP请求中用于验证授权。以下是示例代码:Authentication 使用Firebase密码通过HTTP POST请求进行Firebase服务器端身份验证,authentication,firebase,Authentication,Firebase,根据firebase文档,firebase接受所有REST API类型进行身份验证 换句话说,PUT/POST/GET请求都可以在HTTP请求中用于验证授权。以下是示例代码: curl \ https://SampleChat.firebaseIO-demo.com/users/jack/name.json?auth=CREDENTIAL Firebase文档还说明: 参数可以是您的Firebase机密,也可以是身份验证 代币 我发送的POST请求的配置如下: var Credential
curl \
https://SampleChat.firebaseIO-demo.com/users/jack/name.json?auth=CREDENTIAL
Firebase文档还说明:
参数可以是您的Firebase机密,也可以是身份验证
代币
我发送的POST请求的配置如下:
var Credential = "{\"auth:\", \"zXRLa7lybhJ21ZYqpXuqkT6YAYyySAGJ10lXInKy\"}";
https://MyFirebaseName.firebaseio.com/.json?auth="+Credential
因此,我想使用POST请求,使用我的Firebase机密进行服务器身份验证。我的安全规则是:
{
"rules": {
".read": true,
".write": "auth == 'zXRLa7lybhJ21ZYqpXuqkT6YAYyySAGJ10lXInKy'"
}
}
我收到firebase返回的一个错误,该错误声明:
无效参数:
“zXRLa7lybhJ21ZYqpXuqkT6YAYyySAGJ10lXInKy”
似乎POST
请求实际上正在传递到Firebase,Firebase正在读取数据。只是参数配置不正确。我已经尝试了我能想到的一切。我不确定凭据应该如何配置,我找不到任何关于它的信息。也许它应该是b例如:
{"auth": "The Secret Here"}
我刚试过,它不会接受的
我还尝试使用:
{
"rules": {
".read": true,
".write": "auth !== null"
}
}
希望无论我在RESTAPI中发送什么都能被接受,但这并没有起作用
我做错了什么?我已经看了很多次文档,在这里搜索,搜索了一个Google组。我搞不懂。我需要知道格式,以及POST数据如何在凭据中发送的语法。URL无法解析json。它只是一个文本字符串。只需直接包含令牌即可
curl -X https://INSTANCE.firebaseio.com/users/jack.json?auth=zXRLa7lybhJ21ZYqpXuqkT6YAYyySAGJ10lXInKy // not { auth: '...' }
当您在URL中使用firebase机密时,不会应用安全规则。该机密允许您在不考虑安全规则或验证的情况下进行完全读/写访问。因此,无需在安全规则中读取任何内容
在使用令牌时,您不需要参考安全令牌本身,它是一个加密的json对象,其内容在安全规则中是可用的
要理解这里发生的事情,您需要对令牌有一个初步的了解。至少,这需要从上到下阅读,以及从上到下阅读
在auth变量部分,您将看到以下示例:
var token = tokenGenerator.createToken({"app_user_id": 1234, "isModerator": true });
请注意,令牌的内容是app\u user\u id
和isModerator
。您现在可以在安全规则中引用这两个变量:
".read": "auth.isModerator === true"
您还可以通过以下方式更好地理解令牌:允许您创建和分解令牌以查看其内部内容,并根据您的命名空间验证它们以确保它们正常工作。您的规则只需将write设置为false,如下所示:
{
"rules": {
".read": true,
".write": false
}
}
“?auth=yourFireBaseSecret“在您的curl中,请求将允许您的REST调用通过,而不考虑规则。任何其他请求都需要尊重它,并且将无法写入您的数据。您是否确实在尝试针对.fireabseio demo.com
进行身份验证?您将在这里得到一个结果,但是演示服务器没有身份验证或安全规则。验证!==null应适用于任何有效令牌。您是如何创建自己的,还是使用该名称空间的机密?这不是演示,不是。我没有使用令牌,我只想使用Firebase机密
。我并不反对使用令牌,但我的印象是,我可以将该秘密用于服务器身份验证,而不是个人用户身份验证。至于RESTAPI服务器身份验证的文档,我所能找到的只是我在文章顶部展示的一行示例curl
等。它只提供了?auth=CREDENTIAL
。就这样。我应该用什么来代替凭证
?您可以在安全密钥中的Forge中查找,单击show,然后将该值放在您看到凭证的位置。是的,我试过了。我转到机密
选项卡,单击显示
并复制了我的Firebase机密
。我把它作为字符串放在URL的末尾?auth=“+Credential
其中Credential
是Firebase机密
。