Как сказать Apache, чтобы он ответил 403 вместо 401?
У нас есть некоторые правила для поддерева Location
s, которые включают Require
-ing ldap-group
и expr
s.
Пользователю должным образом предлагается предоставить учетные данные для входа, которые проверяются.
Однако, даже если учетные данные верны и доступ запрещен по другим причинам (таким как принадлежность к неправильной группе или исходящий с неправильного IP-адреса), ответ сервера всегда 401 - вместо 403.
В результате браузеры продолжают запрашивать пользователей чтобы "попробовать еще раз"... Могу ли я сказать Apache (2.4) использовать 403, если информация, указанная в заголовке Authorization
, проверяется, и это какое-то другое правило отклоняет запрос?
1 answers
(Публикую копию моего ответа по ошибке сервера по запросу OP.)
Я думаю, что вы хотите, чтобы authzsendforbiddenonfailure:
AuthzSendForbiddenOnFailure On
Контекст: каталог, .htaccess
Если аутентификация пройдет успешно, но авторизация завершится неудачно, Apache HTTPD по умолчанию ответит кодом HTTP "401 НЕСАНКЦИОНИРОВАННЫЙ". Это обычно приводит к тому, что браузеры снова отображают пользователю диалог с паролем, что не требуется во всех ситуациях. AuthzSendForbiddenOnFailure позволяет изменить код ответа на "403 ЗАПРЕЩЕНО".
Обратите внимание, что он содержит предупреждение о безопасности:
Предупреждение о безопасности
Изменение ответа в случае отсутствия авторизации ослабляет безопасность пароля, поскольку оно показывает возможному злоумышленнику, что его угаданный пароль был правильным.