You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase实时数据库模拟器带access_token时忽略规则?如何开启认证支持

问题解答:为Realtime Database模拟器开启正常认证支持

问题背景

当前Realtime Database模拟器存在以下行为:

  • 所有带access_token参数的REST请求(即使token无效,比如"foo")都会被当作管理员请求,完全跳过安全规则校验
  • 已配置全局安全规则.read和.write均为false,但带无效token的请求仍返回200 OK

解决方案:关联Firebase Auth模拟器

要让Realtime Database模拟器开启正常的认证校验,需将其与Firebase Auth模拟器联动,具体步骤如下:

1. 配置并启动Auth模拟器

方式一:命令行启动

启动模拟器时添加--auth-emulator-host参数,指定Auth模拟器地址:

firebase emulators:start --auth-emulator-host localhost:9099

方式二:通过firebase.json配置

在项目根目录的firebase.json中添加Auth模拟器配置,让Database自动关联:

{
  "emulators": {
    "database": {
      "port": 9000
    },
    "auth": {
      "port": 9099
    },
    "ui": {
      "enabled": true
    }
  }
}

配置完成后直接运行firebase emulators:start即可。

2. 使用合法认证Token测试

联动Auth模拟器后,Database模拟器会严格校验access_token的有效性:

  • 先通过Auth模拟器创建测试用户(可通过模拟器UI或调用Firebase Auth客户端API完成)
  • 获取该用户的有效ID Token,将其作为access_token参数传入REST请求
  • 此时模拟器会验证Token合法性,只有合法Token对应的用户才会进入安全规则校验环节,无效Token会被拒绝(返回401/403)

3. 验证效果

完成配置后再次测试:

  • 不带access_token的请求仍返回401 Unauthorized
  • 带无效Token(如"foo")的请求会被拒绝,不再返回200 OK
  • 带合法用户Token的请求会按照配置的安全规则进行权限校验

原理说明

默认情况下,单独运行的Realtime Database模拟器会将任何带有access_token参数的请求视为管理员请求,这是为了简化快速测试流程。但当与Auth模拟器联动后,Database模拟器会委托Auth模拟器进行Token校验,从而启用真实的认证与权限控制逻辑。

内容的提问来源于stack exchange,提问作者Anthony Bobenrieth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 10:03:22