Как сказать Apache, чтобы он ответил 403 вместо 401?


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

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

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

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

Author: Mikhail T., 2016-12-08

1 answers

(Публикую копию моего ответа по ошибке сервера по запросу OP.)

Я думаю, что вы хотите, чтобы authzsendforbiddenonfailure:

AuthzSendForbiddenOnFailure On

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

Если аутентификация пройдет успешно, но авторизация завершится неудачно, Apache HTTPD по умолчанию ответит кодом HTTP "401 НЕСАНКЦИОНИРОВАННЫЙ". Это обычно приводит к тому, что браузеры снова отображают пользователю диалог с паролем, что не требуется во всех ситуациях. AuthzSendForbiddenOnFailure позволяет изменить код ответа на "403 ЗАПРЕЩЕНО".

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

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

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

 2
Author: Dan Lowe, 2017-04-13 12:14:46