Какой самый простой способ интеграции аутентификации Authy (двухфакторной) с Apache httpd?

РЕДАКТИРОВАТЬ: Нечто похожее на Authy тоже будет работать, если бы эта служба была i) размещена /SaaS и ii) возможность отправлять SMS-сообщения.

  • Большинство примеров защищают RADIUS для двухфакторной аутентификации, но я уже использую OpenLDAP для централизованной аутентификации и предпочел бы не добавлять другую локальную службу для администрирования (но я рад, что вызвал Authy).
  • Само приложение, которое я хочу двухфакторной аутентификации, представляет собой приложение Tomcat, которое имеет собственную внутреннюю аутентификацию на основе форм, которая будет служить вторым типом аутентификации (см. Ниже).
    • Apache httpd * используется для обратного прокси приложения (как мы делаем для всех наших приложений Tomcat), чтобы я мог защитить ресурс в этот момент (как я иногда делал с LDAP). Как только httpd предоставит доступ, аутентификация Tomcat будет продолжена.
    • Я не видел ни одного mod_auth_authy или чего-либо подобного на их сайте разработчиков https://www.authy.com/developers - просто в основном библиотеки для языков, поэтому я не уверен, как лучше это реализовать.

(* Apache httpd может быть заменен на NGINX в какой-то момент, поэтому в идеале предлагаемое решение будет перенесено, но, пожалуйста, не отказывайтесь от предложения Apache httpd-only решений!)

1 ответ

Последовательность аутентификации и требования для меня до сих пор не ясны, но с Apache все должно быть просто. Я реализовал аналогичную настройку, используя куки.

Вам необходимо иметь 2 местоположения в одном домене (чтобы разрешить доступ к одним и тем же файлам cookie) - одно защищенное, другое незащищенное (используется для отображения страницы входа и создания файла cookie при успешном входе в систему)

httpd config защищенного местоположения будет выглядеть ниже:

<Location /content>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/
RewriteCond %{HTTP_COOKIE} ^.*2FAToken=([^;]+)
RewriteCond /home/securefolder/sessions/%1 -f
RewriteRule ^.*$ - [P,S=1]
RewriteRule /(.*) https://URL-of-login-page/login?url=%{REQUEST_FILENAME} [L]
</Location>

Второе местоположение должно содержать вашу страницу входа в систему, которая будет обрабатывать вход в систему и создавать файл cookie с именем 2FAToken со случайным идентификатором сеанса; он также должен создать текстовый файл в /home/securefolder/session / с именем файла, совпадающим с идентификатором сессии

Apache прочтет файл cookie, убедится, что файл с таким именем существует в /home/securefolder/session / и разрешит доступ к вашему приложению.

Но, вопрос, почему бы вам не сделать это напрямую с вашим приложением?

Другие вопросы по тегам