yee*_*lan 1 google-app-engine web-applications google-cloud-storage
我正在开发一个 Web 应用程序,作为与 Google Cloud Storage (GCS) 的接口。
我正在使用后端服务通过 JSON API 检索我存储在 GCS 上的文件列表及其 URL,并将其返回到我的 Web 应用程序。但是,我真的无法通过这些 URL 加载文件,这些 URL 总是以 403 forbidden 返回。
我不确定 GCS 身份验证在幕后如何工作,以及是否可以直接授予对 Web 应用程序的访问权限。我不确定如何通过 http 请求附加应用程序身份验证信息。我所知道的是我可以通过后端服务来做到这一点,但为了简单起见,我想知道是否有可能解决这个问题。我尝试的一件事是将 Web 应用程序域(将通过 http 请求中的引荐来源发送)添加到该存储桶的 ACL 中,这根本不起作用。
并感谢@Brandon 在下面指出的内容。我可以授予任何有权访问该应用程序的人查看 GCS 的内容,因为它是一个内部应用程序,并且我在第一次为 Web 应用程序提供服务时已经检查了他们的身份验证。
====
解决方案
我最终使用了 5 分钟后过期的 signedUrl,我强烈建议使用gcloud与 gcs 交互(他们的python 文档非常好)。再次感谢您的详尽解答!
您在 Web 浏览器上有一个用户想要下载只有您的应用程序的服务帐户具有读取访问权限的对象。您有几个选择:
#4 是你想要的。您的用户会向您的应用索要文件,您的应用将决定是否允许他们通过您正在执行的任何操作(密码?IP 检查?Cookie?等等)访问该文件。然后,您的应用将使用用户的 URL 进行响应可用于直接从 GCS 获取文件。
此 URL 称为“签名 URL”。您的应用程序使用其自己的私钥向 URL 添加一个签名,该签名指示承载者可以下载哪个对象,并且该 URL 是有效的。签署 URL的过程有些棘手,但幸运的是 gcloud 存储库具有可以生成它们的辅助函数。
| 归档时间: |
|
| 查看次数: |
1085 次 |
| 最近记录: |