Защита статических загрузок в Apache2 с помощью S3-подобной REST-аутентификации? - PullRequest
0 голосов
/ 01 мая 2011

Я хотел бы предоставить статический загрузочный контент, обслуживаемый обычным процессом apache2, с аутентифицированными ссылками REST, аналогичными тем, что предлагаются в Amazon S3, как в 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 голосов
/ 03 мая 2011

Вот как я это решил: я использовал

  • пользовательский сценарий CGI в ruby, который реализует подмножество S3 REST-аутентификации, которое мне нужно
  • и mod_xsendfile для отправки загрузки клиенту.

Все, что нужно сделать сценарию CGI, - это отправить заголовок X-Sendfile, когда аутентификация пройдет успешно, затем apache2 вступит во владение и передаст файл с полной скоростью / поддержкой тегов кэша и т. Д.

У меня хорошо работает, так как количество запросов на загрузку в секунду невелико. И решение не раздувает процесс apache2 какими-либо дорогими скриптовыми модулями | error_prone.

...