我正在尝试保护对我的应用引擎网络应用上的优质内容的访问权限。内容是Articulate模块,它是一个player.html,包含许多相关的javascript,音频和视频资源。我正在尝试使用Google云端存储来托管内容。
我的想法是,当使用我的应用进行身份验证且具有适当访问权限的用户请求优质内容时,我的应用可以为player.html签署一个网址。我不确定的是如何处理所有相关的资源文件?签名的网址很简单,可以保护单个文件,但文件组呢?我是否必须为所有内容签署网址,或者是否可以让一个签名网址允许访问相关文件?
ACL不是一个选项,因为我推出了自己的身份验证,而不是使用oAuth和Google帐户。
任何想法或替代策略都会受到赞赏。
在反思和研究了一些之后,我想知道根据说明here将GCS存储桶配置为网站。
如果我理解正确的文档,我会创建一个CNAME来将我的自定义域content.example.com中的请求指向c.storage.googleapis.com,并且通过此CNAME到达的请求将被提供,就好像它们是静态网页。有人知道以这种方式提供的文件有哪些访问控制可用(如果有的话)?以这种方式提供的文件是否还需要签名/ ACL,如果它们不公开?
答案 0 :(得分:1)
不幸的是,您在这里的选择有限。以下是两个想法,但它们都有相当大的缺点。不幸的是,两者都不是很棒。
使所有相关资源可公开访问,并保存在不可知的子目录下。用户将使用签名URL加载受保护的根资源,其中包括指向可公开访问的辅助资源的链接。缺点:子资源不受保护,任何知道URL的一方都可以下载。可能的缓解:定期轮换子资源目录。
更改包括通过您的appengine应用程序路由所有资源,该应用程序将使用自己的方案进行身份验证,并重定向到每个子资源的新签名URL。缺点:通过appengine进行大量额外的啤酒花。例如,player.html会将一部电影包含为“https://yourapp.appspot.com/resources/movie.mov”,这会触及您的appengine应用,然后进行身份验证,然后重定向到已签名的“https://storage.googleapis.com/yourbucket/movie.mov?signaturestuff”