Authentication 使用Firebase密码通过HTTP POST请求进行Firebase服务器端身份验证

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

根据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 = "{\"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机密