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

标签 firebase firebase-storage

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

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

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

最佳答案

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

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

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

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

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

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

    关于firebase - 对 firebase-storage 可下载 url 执行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41088164/

    相关文章:

    Firebase Analytics 自定义事件未显示在事件列表中

    java - 我的应用程序在启动时崩溃

    javascript - 如何访问 Firestore 中查询文档的子集合?

    javascript - react native Firebase图像上传错误404

    Firebase 推送 key 作为 Firebase 存储文件名?

    android - 上传图像,Firebase 显示 "User does not have permission to access this object",即使存储设置是公开的

    java - 如何把最后一个文档添加到recyclerview的底部?

    ios - 使用Swift/Firebase/Microsoft处理登录

    ios - 无法将图像加载到 Firebase(无法识别的选择器)

    java - 如何将 Firebase 与 Glide ('using' 方法集成)