Обратный прокси-сервер Apache2 со страницей входа в PHP (проверьте наличие сеанса var перед пересылкой на сервер)

У меня нормально настроен обратный прокси-сервер apache2 для бэкэнд-сервера ssl.

(WWW -> Apache2 -> Server) Работает нормально.

У меня есть хороший способ сделать 2FA с использованием TOTP и хочу, чтобы это работало для этого конкретного веб-приложения.

Как я могу заставить apache2 проверить наличие sessionid / var (проверить, прошел ли пользователь аутентификацию с использованием моего php-скрипта), прежде чем перенаправлять их на сервер за прокси-сервером?

IE: я ищу это..

  1. Пользователь подключается к прокси и получает форму входа в систему.
  2. Пользователь получает аутентификацию сеанса ($ _SESSION ['loggedin'] = "1")
  3. Apache проверяет, если это = 1, если это так, пересылать на проксируемый хост. Если нет, представьте login.php (как пример)

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

Мне просто нужно, чтобы apache мог проверить, вошли ли они в php, прежде чем пересылать на проксируемый хост.

Обратный прокси-сервер в настоящее время работает нормально, просто нужно этот дополнительный "логин", прежде чем прокси для работы..

Текущий конфиг по сути это..

<VirtualHost *:80>
ProxyPreserveHost On

ProxyPass / http://10.0.0.1:80/
ProxyPassReverse / http://10.0.0.1:80/

Было бы неплохо иметь что-то в виртуальном хосте, чтобы сказать что-то вроде: ЕСЛИ СЕССИЯ ПОЛЬЗОВАТЕЛЯ VAR X = Y, то Proxy.

Есть идеи?

Я ничего не могу найти в Интернете.

1 ответ

Эй, мистер Себя называется "Умный" Грэм xD

Первый. В IT нет ничего невозможного.

Я хотел бы реализовать именно то, что вы хотите. До сих пор я использовал BasicAuth для этой проблемы.

Чтобы решить проблему с проверкой подлинности Apache, вам нужно использовать директиву Location.

Для BasicAuth это выглядит так

<VirtualHost *:80>
    ServerName myproxyservice.mydomain.de

    ServerAdmin webmaster@mydomain.de

    <Location />
        AuthType Basic
        AuthName "Restricted area"
        AuthUserFile /var/www/html/myproxyservice/.htpasswd
        Require valid-user
    </Location>

    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>

    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:32400/
    ProxyPassReverse / http://127.0.0.1:32400/
</VirtualHost>

Но сейчас. Я хочу иметь более приятную форму входа. Это возможно с модулем Apache.

mod_session

mod_auth_form"Вот простые примеры, поэтому мне не нужно их создавать"

Уважаемые пользователи Linux. У вас должны быть активированы следующие модули:

a2enmod session_cookie

запрос a2enmod

a2enmod auth_form


MfG R0b1ns - 'Ich hab auch Discord:)

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