Назад | Перейти на главную страницу

Apache: требуется базовая аутентификация, за исключением определенных запросов POST

(RHEL 6.2, Apache 2.2.1)

Я пытаюсь запустить сайт LAMP за базовой аутентификацией, чтобы предотвратить общий доступ (это тестовая среда для сайта, все еще находящегося в производстве), и я столкнулся с проблемой, когда функция загрузки нескольких файлов не работает, потому что она неправильно обрабатывает аутентификация; Я вижу в журналах Apache, что аутентификация сброшена для POST

10.77.34.123 - testuser [14/Mar/2012:14:10:13 +1100] "GET /index.php/tools/required/files/import?ocID=&searchInstance=file1331694544 HTTP/1.1" 200 8558
10.77.34.123 - testuser [14/Mar/2012:14:10:13 +1100] "GET /concrete/js/swfupload/swfupload.js?_=1331694608575 HTTP/1.1" 200 36807
10.77.34.123 - testuser [14/Mar/2012:14:10:13 +1100] "GET /concrete/js/swfupload/swfupload.handlers.js?_=1331694608601 HTTP/1.1" 200 6443
10.77.34.123 - testuser [14/Mar/2012:14:10:13 +1100] "GET /concrete/js/swfupload/swfupload.fileprogress.js?_=1331694608621 HTTP/1.1" 200 7529
10.77.34.123 - testuser [14/Mar/2012:14:10:13 +1100] "GET /concrete/js/swfupload/swfupload.queue.js?_=1331694608636 HTTP/1.1" 200 3479
10.77.34.123 - testuser [14/Mar/2012:14:10:14 +1100] "GET /concrete/flash/swfupload/swfupload.swf?preventswfcaching=1331694608650 HTTP/1.1" 200 12419
10.77.34.123 - - [14/Mar/2012:14:10:20 +1100] "POST /index.php/tools/required/files/importers/multiple HTTP/1.1" 401 488

В качестве действительно быстрого исправления я изменил конфигурацию Apache, чтобы аутентификация требовалась только для запросов GET, а не POST, но это нежелательно с точки зрения безопасности. Текущая директива Apache:

<Directory />
  AuthName "Priceline Portal Dev"
  AuthUserFile /home/dev_priceline/passwords
  <Limit GET>
    AuthType Basic
    Require valid-user
  </Limit>
</Directory>

Что требует базовой аутентификации для доступа к сайту (через GET), но позволяет проходить POST.

Я хочу изменить это так: POST-запросы, содержащие "несколько" в URL-адресе, не требуют аутентификации. Для всех остальных запросов требуется базовая аутентификация.

Есть ли способ сделать это с помощью директив Apache? Функциональность множественной загрузки встроена в используемую CMS, а базовая аутентификация не будет использоваться в финальной версии, поэтому я не хочу изменять сам код загрузки.

Что ж, это довольно некрасиво ..

<Directory />
    AuthName "Priceline Portal Dev"
    AuthUserFile /home/dev_priceline/passwords
    AuthType Basic
    Require valid-user
</Directory>
<LocationMatch .*/multiple$>
    <Limit POST>
        Satisfy Any
    </Limit>
</LocationMatch>

Итак, просто разрешите игнорировать правила аутентификации (при условии, что хост разрешен Allow/Deny правила) только для POST запросы, заканчивающиеся на /multiple, как и в вашем журнале. Как это звук?