【问题标题】:How to write secure rules for firebase when using custom authentication?使用自定义身份验证时如何为 Firebase 编写安全规则?
【发布时间】:2021-07-25 09:23:29
【问题描述】:

我正在使用 django 和 firebase 构建一个应用程序。我已经建立了我的自定义身份验证系统。而且我需要安全规则,以便只有经过我身份验证的人才能在数据库或存储中读/写。

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

这些是我当前的规则,所以当我请求(在数据库上读取或写入)时,它们是传递令牌的一种方式,这是第一次检查。像 ->

{
  "rules": {
    ".write": "isAuthorized == true",
    ".read": "isAuthorized == true"
  }
}

当向数据库发出请求时 - db.child('test').get() 我传递了这个 isAuthorized bool

感谢任何帮助,或者您可以提出更改建议。

【问题讨论】:

  • “自定义身份验证系统”是否意味着您没有完全使用 Firebase 身份验证或仅使用自定义身份验证流程?
  • 根本不使用

标签: django firebase firebase-realtime-database firebase-security


【解决方案1】:

如果您不使用Firebase Authentication,则无法仅根据您的身份验证方法使用安全规则。您必须使用自己的方式对用户进行身份验证,向他们授予可以使用 Admin SDK 生成的 custom token,然后使用该令牌通过 Firebase Auth 登录。因此,从技术上讲,您正在使用您的用户身份验证方式,同时也使用 Firebase Auth 将他们登录到您的网络应用程序。

身份验证流程如下:

  1. 用户输入他们的凭据
  2. 您的服务器对其进行身份验证并生成自定义令牌
  3. 令牌被发送回客户端并使用signInWithCustomToken() 方法登录。

如果您根本不想实现此功能,那么唯一可行的方法是通过将安全规则设置为 false 并通过您的服务器路由所有请求来禁用直接访问您的数据库。对于每个请求,检查用户是否有权访问他们手动请求的资源并提供服务。

【讨论】:

    猜你喜欢
    • 2019-01-20
    • 2019-02-13
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    相关资源
    最近更新 更多