попробуй сделать map от $ssl_client_verify, в котором для success будет значение off. для остальных значений - путь до файла htpasswd. потом в нужном месте напиши auth_basic $var_from_map
Добрый день! Хочу посоветоваться. Есть сервер, где зона «для сотрудников» закрыта двумя слоями авторизации: auth_basic + проверка на уровне приложения, с куками, сессиями и прочим. Отказываться от auth_basic не хочется:
Проблема в том, что большинство браузеров неудобно работают с basic_auth: Сафари под iPhone спрашивает пароль каждые несколько часов и даже не заморачивается, чтобы его запомнить. FireFox после рестарта показывает модальный диалог со вводом пароля в одном из окон и блокирует все остальные окна с тем же сайтом. Неудобно, короче. Настроил клиентские сертификаты. Есть сотни мануалов, ничего интересного. Но вот раздача сертификатов сотрудникам и установка их в браузеры – дело муторное. У каждого браузера свои тараканы, сложно объяснить сотруднику по телефону, как поставить сертификат в его браузер и т. д. А если сертификат устареет или придётся его отозвать, совсем беда. Поэтому решил сделать вот какую логику:
Я не нашёл способа, как настроить конфиг nginx, чтобы эту логику реализовать. Конструкции с
несовместимы с auth_basic. Пока придумал только одно: отпатчил ngx_http_auth_basic_module.c, сделал в нём директиву по которой проверка пароля выключается, если предъявлен валидный клиентский сертификат. Вопросы:
С уважением, Владислав |
_______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru