从 Amazon S3 提供经过身份验证的静态文件

Serving authenticated static files from Amazon S3

我有一个应用程序允许用户将内容上传到 Amazon S3,并且 returns 上传内容的 link。 我一直在想如何只允许拥有该内容的用户访问它,并且我获得了 http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html 授权 header。

我认为的一种使用方法是:为每个内容生成一个 link 到我的应用程序主机(例如:从 bucket.s3.amazonaws.com/29347524.jpg 到 -> myapp.com/image/154155.jpg) 并将其提供给用户。当我收到请求时,我将检查用户是否在我的应用程序中经过身份验证,如果匹配成功,我将向请求分配授权 header 并将其转发给亚马逊。

我不想从我的应用程序服务器下载亚马逊服务器的内容并将内容提供给客户端。我认为这是对乐队的无用浪费。 添加一些 headers 后,是否有任何方法可以转发请求?这样客户在请求内容时得到亚马逊的答复,但请求是向我的服务器发出的,并在某些部分进行了修改。

您是否知道对 Amazon 的 S3 内容执行这样的身份验证的任何其他方法?任何建议将不胜感激

我会查看 S3 中的 pre-signing 设施:http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html

您的应用程序服务器可以生成 time-bound URL,并使用 HTTP 302 和相应的位置 header.

重定向用户

如果您 Google "amazon s3 presign url",您会发现更多资源:博客文章和亚马逊官方文档。