为firebase-storage可下载URL强制执行身份验证

时间:2016-12-11 16:07:24

标签: firebase firebase-storage

Firebase文档建议obtaining a downloadable url(例如,用于html { data }标记中的流媒体视频)由<video>在任何存储引用上完成。因此,您可以设置将通过SDK应用于客户端请求的安全规则。

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

我们提供的授权是&#34;他们有一个很长的不可饶恕的令牌&#34;这意味着有权与他们共享文件的人授予他们许可。这通常被称为&#34;公共的,不可饶恕的URL&#34;或者#34;签名的网址&#34;由于加密签名经常用于传达某些声明(例如URL有效期多长,它有效的操作等)。

我们认为制作一个&#34;外部&#34;表示只能由&#34;内部&#34;应用程序用户,但如果您不同意,我会愿意听取您的使用案例。