我正在使用Web应用程序作为Google云端存储(GCS)的界面。
我正在使用后端服务来检索我在GCS上存储的文件列表及其使用JSON API的URL,并将其返回到我的Web应用程序。但是,我真的无法通过这些URL加载文件,这些URL总是以403禁止的方式返回。
我不确定GCS身份验证如何在场景后工作,以及是否可以直接授予对Web应用程序的访问权限。我不知道如何通过http请求附加应用程序身份验证信息。我所知道的是我可以通过后端服务做到这一点,但出于简单的原因,我想知道是否有可能解决这个问题。我试过的一件事是将Web应用程序域(将通过http请求中的referrer发送)添加到该存储桶的ACL中,这根本不起作用。
感谢@Brandon在下面指出的内容。我可以授予任何有权访问该应用程序的人查看GCS的内容,因为它是一个内部应用程序,我在第一次提供Web应用程序时已经检查了他们的身份验证。
====
解决方案
我最终使用了在5分钟后过期的signedUrl,我强烈建议使用 gcloud 与gcs进行互动(他们的python document非常好)。再次感谢您的全面解答!
答案 0 :(得分:2)
您在网络浏览器上有一个用户想要下载只有您应用程序的服务帐户具有读访问权限的对象。您有几个选择:
#4就是你想要的。您的用户会向您的应用程序询问文件,您的应用程序将决定是否允许他们通过您正在进行的操作访问该文件(密码?IP检查?Cookie?无论如何。)然后,您的应用将使用用户的URL进行响应可以用来直接从GCS获取文件。
此网址称为“已签名的网址”。您的应用程序使用自己的私钥向URL添加签名,该URL指示持有者可以下载哪个对象,并且URL很长。 procedure for signing URLs有点棘手,但幸运的是gcloud存储库have helper functions可以生成它们。