2-факторная авторизация средствами nginx

Привет, друзья. Сегодня я хочу поведать о том, как я запилил 2-х факторную авторизацию на любое количество ресурсов. Итак, у нас есть некоторые web-ресурсы, доступ к которым должен быть ограничен списком белых IP-адресов и подсетей. Хороший пример это билд сервера или wiki. У админов не всегда есть возможность быстро обновлять ПО на серваках. Поэтому хотелось бы прикрыть к таким ресурсам доступ некой заглушкой.

Именно для этих целей мы с вами запилим динамический список “авторизованных IP-адресов” с помощью nginx. Конечно, реализовать функционал вы можете своими средствами, ухватив основную идею. Общий алгоритм для IP-адресов которые не попадают в список белых IP:

  1. nginx смотрит, что IP, с которого пытаются обратиться к “закрытому” ресурсу не входит в список авторизованных. После чего делается 302 редирект на сайт авторизации. В моем случае это authme.domain.com.
  2. После перехода открывается простая форма с предложением ввести email адрес.
  3. Проверяется что email валидный. В моем случае, я проверяю что email принадлежит зоне domain.com.
  4. Если email валидный, генерируется ключ(с привязкой к IP с которого пришел запрос), который сразу высылается ссылкой на почту.
  5. Пользователь проверяет почту и переходит по ссылке.
  6. authme.domain.com проверяет, что ключ и IP адрес валидные. После чего добавляет в конфигурационный файл nginx IP-адрес в список белых адресов. После чего делается nginx reload, что тот перепрочитал конфигурационные файлы.

Надеюсь основная идея вам ясна. Подходит это вам или нет – решать вам. По ссылке вы найдете docker контейнеры с приложением на nodejs и nginx. Ну и там же есть пример использования.

https://github.com/voiplab/docker

 

Рекомендуем почитать
Статистика по обращениям к nginx в realtime

Иногда бывает полезно увидеть TOP IP адресов с которых идут обращения к вашему backend. Если у вас настроено логивание в Читать дальше...

Frontend на nginx и IP-адреса клиентов в apache

Админам и программистам, использующим в качестве frontend сервера - Nginx, а в качестве backend - Apache, бывает необходимо видеть в Читать дальше...

Bitrix и 301 redirect

Я не являюсь гуру Bitrix, поэтому прошу ногами не топтать, если вам мой способ редиректа домена на www вам не Читать дальше...

Поделиться

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *