对 firebase-storage 可下载 url 执行身份验证

tom*_*per 8 firebase firebase-storage

Firebase 文档建议在任何存储引用上通过,获取可下载的 url(例如,用于 html<video>标记中的流式视频)getDownloadURL()。因此,您可以通过 SDK 设置将应用于客户端请求的安全规则。

但是,接收到的可下载 URL 似乎对任何客户端/设备都是公开可用的,无需身份验证。

有没有办法对这种用例强制执行安全授权?我注意到您可以在控制台中手动撤销公共 URL,但这不是可扩展的解决方案,也不安全。

Mik*_*ald 6

有两种方法可以从 Firebase 存储下载文件:

  • gs://bucket/object
  • https://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<UUID>

前者是内部参考,可用于通过我们的 SDK 上传和下载文件。这些受 Firebase 身份验证和 Firebase 存储安全规则的保护。它旨在供您的应用程序用户在应用程序中使用。

后者是外部引用,只能用于下载已共享的文件,通常在应用程序外部。由于与此共享的用户不在您的应用程序中,因此他们无法进行身份验证,因此授权不太有趣。

我们提供的授权是“他们是否有一个不可猜测的长令牌”,这意味着被授权与他们共享文件的人授予了他们权限。这通常被称为“公共的、不可猜测的 URL”或“签名 URL”,因为加密签名通常用于传达某些声明(例如 URL 的有效时间长短、它对哪些操作有效等)。

我们认为,制作只能由“内部”应用程序用户使用的“外部”表示没有什么意义,但如果您不同意,我愿意听取您的用例。