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

Директива Apache Limit игнорируется, содержимое выполняется всегда

Я хочу, чтобы пользователи проходили аутентификацию при вызове определенного метода HTTP, но при этом не нуждались в аутентификации при вызове других методов HTTP. Я использую Limit директива, потому что она должна делать то, что я хочу, но я не могу заставить ее работать.

SSLVerifyClient none
<Location /foo>
    SSLVerifyClient none
    <Limit PUT>
        SSLVerifyClient require
    </Limit>
</Location>

Кажется, что последний SSLVerifyClient оператор всегда выполняется, независимо от того, какой вызов я делаю (PUT, DELETE)

Я тоже пробовал использовать LimitExcept но он ведет себя так же неправильно.

Поскольку я не могу найти ответы в Интернете, я предполагаю, что это не проблема, но я начал работать над этим на прошлой неделе, чтобы заменить коллегу, который находится в отпуске. Кто-нибудь может мне помочь?

Кажется, что Limit Директива работает только для ограничения доступа. Другие директивы внутри него могут вообще не работать или работать не так, как вы ожидаете. В вашем случае он может не запускать разные значения SSLVerifyClient в зависимости от типа запроса.

Обходной путь может заключаться в создании разных каталогов или псевдонимов, настроенных с разными значениями SSLVerifyClient директива и, возможно, обработка другого набора HTTP-методов.

http://httpd.apache.org/docs/current/mod/core.html#limit:

<Limit> Директива

Описание: ограничить закрытые элементы управления доступом только определенными методами HTTP.

Цель директивы - ограничить действие элементов управления доступом назначенными методами HTTP. Для всех остальных методов ограничения доступа, заключенные в скобки, не действуют.