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

Как заставить Apache отвечать 403 вместо 401?

У нас есть несколько правил для поддерева Locations, которые включают Require-ing ldap-group и expr-с.

Пользователю предлагается предоставить учетные данные для входа, которые проверяются.

Однако, даже если учетные данные верны и доступ запрещен по другим причинам (например, принадлежность к неправильной группе или исходящий с неправильного IP-адреса), сервер всегда отвечает 401, а не 403.

В результате браузеры продолжают предлагать пользователям «повторить попытку» ... Могу ли я сказать Apache (2.4) использовать 403, если информация, предоставленная в Authorization-header check-out, и это какое-то другое правило отклоняет запрос?

Опять же, я знаю, Зачем, после аутентификация успешно, разрешение для некоторых пользователей отказано - это должно быть. Мне просто нужно сообщить таким пользователям, что: «Да, мы считаем, что вы такой, каким вы себя называете, но вам не разрешен доступ к этому месту».

Похоже, что mod_rewrite - единственный способ вызвать ответ 403 - может ли выражение mod_rewrite проверять членство в LDAP-группе или принудительно изменять статус с 401 на 403?

Я задал этот вопрос на Сайт веб-мастера, но нет ответов - люди там, кажется, больше содержание-ориентированный.

Вот соответствующий фрагмент моей текущей конфигурации:

<Location /foo>
         Require ldap-group CN=foo,OU=Groups,DC=example,DC=net
</Location>

Когда предоставленное имя пользователя / пароль проверены, но требование не выполнено, мне нужно вернуть 403 ... 401 возвращается в настоящее время.

Я думаю, что ты хочешь AuthzSendForbiddenOnFailure:

AuthzSendForbiddenOnFailure On

Контекст: каталог, .htaccess

Если аутентификация прошла успешно, но авторизация не прошла, Apache HTTPD по умолчанию ответит кодом ответа HTTP 401 UNAUTHORIZED. Обычно это заставляет браузеры снова отображать диалоговое окно с паролем для пользователя, что требуется не во всех ситуациях. AuthzSendForbiddenOnFailure позволяет изменить код ответа на 403 FORBIDDEN.

Обратите внимание, что он содержит предупреждение системы безопасности:

Предупреждение безопасности

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