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

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

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

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

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

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

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

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

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

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

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

2
задан 13 April 2017 в 15:33
1 ответ

Я думаю, что вам нужно AuthzSendForbiddenOnFailure :

AuthzSendForbiddenOnFailure On

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

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

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

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

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

3
ответ дан 3 December 2019 в 10:36

Теги

Похожие вопросы