iOS中的Firebase“管理员用户”?

Posted

技术标签:

【中文标题】iOS中的Firebase“管理员用户”?【英文标题】:Firebase "admin user" in iOS? 【发布时间】:2021-11-05 16:15:27 【问题描述】:

这是我想要实现的目标:

我有一个 ios 前端、一个 Vapor 后端和一个 Firebase 存储桶。我有一个应用程序,其中一小部分功能能够将图像添加到一些 Note 对象。当用户将图像附加到注释时,我想将图像上传到存储桶,获取存储它的密钥/url,并将其存储在后端数据库中。这一切都很简单,除了 - 我希望存储桶只能由我的 iOS 代码和我的后端代码访问,而不是任何人都可以公开访问。

后端由服务帐户内容覆盖。但我不确定如何覆盖 iOS 端。 Firebase 生成了这个基本规则来防止公共访问:

service firebase.storage 
  match /b/bucket/o 
    match /allPaths=** 
      allow read, write: if request.auth != null;
    
  

我相信这条规则只允许通过 Firebase 身份验证的用户使用存储桶,但我不打算通过 Firebase 对我的用户进行身份验证。有没有办法可以设置规则,使存储桶只能通过我自己的 iOS 代码访问?我是否应该只创建一个 Firebase 用户,并让该应用在每次应用启动时都以该用户身份进行身份验证?我可以配置 Firebase 以使其使用一些秘密来允许它执行超出规则的存储操作吗?

**为清晰起见进行了编辑

【问题讨论】:

查找 Firebase 匿名授权 【参考方案1】:

正如@jnpdx 评论的那样,看看Firebase 的anonymous authentication,它允许您在不要求提供凭据的情况下登录(和识别)用户。基于此,您需要确保每个用户只能读取他们被授权的文件。

虽然if request.auth != null 最初看起来不错,但我发现从最小特权原则开始通常更好 - 例如have some form of content ownership based access rules。

最后,还请看一下今年早些时候推出的 Firebase App Check,它与您手机上的证明提供商合作,以降低未经授权的代码被用于调用存储 API 的风险。

【讨论】:

以上是关于iOS中的Firebase“管理员用户”?的主要内容,如果未能解决你的问题,请参考以下文章

如何只允许一个管理员用户编写 Firebase 数据库?

从应用发送 Firebase 通知请求

Firebase 在创建新用户时注销当前用户

我可以使用 Firebase Admin SDK for Node 重置用户密码吗?

Firebase无需登录即可创建用户[重复]

如何在 Firebase 中创建基于角色的访问控制或自定义声明