apache basic auth требует, чтобы группа не запрещала
У меня есть базовая аутентификация настроена с пользователем и группами
AuthType Basic
AuthName "GSD Dev Area"
AuthUserFile /coding/conf/passwords/gsdesign/htpasswd
AuthGroupFile /coding/conf/passwords/gsdesign/groups
Require valid-user
и теперь я хочу защитить папку с доступом только для группы
require group myGroup
и это работает, но есть одна проблема. Если я не дал доступ к этой папке, я снова получаю окно входа в систему, и я хотел бы через запрещено. Как я могу это сделать.
Большое спасибо.
Позднее редактирование Я уже вошел в систему с действительным именем пользователя, но когда я получаю доступ к области, в которой есть требуемая группа, частью которой я не являюсь, я хочу получить отказ в авторизации вместо поля входа в систему.
2 ответа
Это вполне возможно сделать, но для этого потребуется написать собственный обработчик для Apache. Вы можете написать это C, Perl или Python или любые другие привязки для API-обработчика Apache.
Стандартное поведение HTTP-аутентификации - возвращать ответ 401 Authentication Required для обоих запросов без какой-либо информации для аутентификации и для неверных деталей. Браузер будет отображать диалоговое окно входа в систему, когда получит ответ 401. Вам придется отвечать на запросы без информации для аутентификации с помощью ответа 401 Authentation Required и любой неправильной аутентификации с помощью ответа 403 Forbidden. Это должно решить вашу проблему.
Не уверен, что понимаю вопрос, но, по-моему, вы говорите, что когда вы вводите недопустимую комбинацию имени пользователя и пароля, браузер снова всплывает в окне, вместо того чтобы сказать "Доступ запрещен". Это особенность браузера - он будет запрашивать учетные данные, пока вы не укажете их правильно или не нажмете кнопку "Отмена" (после чего вы действительно получите страницу с отказом в доступе). Насколько я знаю, единственный надежный способ изменить это - выполнить аутентификацию самостоятельно, а не с помощью AuthType Basic.
Кстати, никогда, никогда не используйте AuthType Basic для защиты всего, что вас волнует, если ваша страница не обслуживается через https. AuthType Basic отправляет учетные данные в виде открытого текста, поэтому вам необходим уровень SSL для его шифрования.