使用类似S3的REST身份验证保护Apache2中的静态下载?

时间:2011-05-01 13:42:20

标签: apache2 amazon-s3 restful-authentication

我希望将常规apache2进程提供的静态下载内容与类似于Amazon S3提供的REST身份验证链接一起公开,如http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html中所示。

即,我希望能够使用以下形式的经过身份验证的过期链接进行下载: http://www.example.com/download/download.zip?AWSAccessKeyId=44CF9590006BF252F707&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv4%3D

来自我自己的服务器。而且我希望它与S3兼容,这样我就可以在需要时从我的专用服务器扩展到云端。

似乎最好的方法是使用apache authz_module来检查相应的查询参数。为了提高效率,我宁愿不携带mod_(perl | python | php),也不要通过脚本发送实际内容。

这似乎是一个可能会定期提出的要求。然而,我在网上找不到任何相关内容。我想知道其他人是否以及如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

以下是我如何解决它:我使用了

  • ruby​​中的自定义CGI脚本,它实现了我需要的S3 REST身份验证子集
  • 用于将下载内容发送到客户端的
  • mod_xsendfile

所有CGI脚本必须做的是在身份验证成功时发送X-Sendfile头,然后apache2接管并以全速/缓存标记支持等方式传输文件。

对我来说效果很好,因为每秒下载请求的数量很少。并且该解决方案不会使用任何昂贵的| error_prone脚本模块使apache2进程膨胀。