首页 文章

使用Firebase应用密钥验证服务器

提问于
浏览
3

I want to implement the server authentication method described here in paragraph 1 .

使用Firebase应用程序密钥:所有身份验证方法都可以接受Firebase应用程序密钥而不是JWT令牌 . 这将授予服务器对整个Firebase数据库的完整读写权限 . 除非通过App Dashboard撤消,否则此访问权限永不过期 .

我需要指导如何做到这一点 . 我不想使用任何 auth 变量,因为我不会通过一些单一的静态密钥对用户进行身份验证,而是我的服务器 .

那么我的安全规则会是什么样子?

这是我到目前为止所拥有的 .
security-rules.json

{
  "rules": {
    ".read": true,
    ".write": "secret == 'mykey'"
  }
}

我将如何在服务器端HTTP请求中实现此功能?我会创建一个名为 secret 的标头,其值为 mykey ,如下所示:
server.js

{"secret": "mykey"}

2 回答

  • 0

    要在HTTP请求中使用机密,请将其传递给URL的auth参数 . 例如 .

    curl 'https://yours.firebaseio.com/.json?auth=<your_secret>'
    

    当您使用您的密钥对Firebase进行身份验证时,生成的会话将以管理员身份运行 . 它具有对整个Firebase数据库的完全读/写访问权限,就像访问Firebase仪表板时一样 . 因此,您无需在安全规则中授予任何权限 .

    如果您希望能够检测服务器,则应使用自定义令牌而不是秘密 . 创建自定义标记时,可以准确确定 auth 变量的内容 . 例如 .

    {
      "uid": "myserver"
    }
    

    现在,您可以在安全规则中检查该特定的uid:

    {
      "rules": {
        ".read": true,
        ".write": "auth.uid = 'myserver'"
      }
    }
    

    您可以使用此jsfiddle制作自定义令牌:http://jsfiddle.net/firebase/XDXu5/

  • 5

    Firebase机密已弃用 . 所以我建议你不要使用它 .

相关问题