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 вам не Читать дальше...

Поделиться

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

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