
Изначальноразмещено на SO, но я думаю, что это больше относится сюда. Предложения, комментарии и в идеале решения, будут приветствоваться ! (кстати, я удалю SO Thread, если это было не по адресу)
Мне нужно настроить обратный прокси-сервер для предоставления ограниченного доступа извне к внутреннему серверу. Вот основные требования:
- Перенаправлять запросы отhttps://www.example.comкhttp://внутреннийсервер(сделанный)
- Положитесь на простой, но проверенный механизм аутентификации. (в настоящее время работает)
- Управляйте ролями пользователей, добавляя некоторые параметры GET к URL-адресу. (но как?)
- На сервере размещено приложение Java. У меня пока нет к нему доступа, и код приложения не подлежит изменению. Это не должно иметь значения.
Я установил и настроилmod_proxy, и перенаправление работает нормально.
Авторизация использует apache2базовая аутентификация, что должно быть достаточно с точки зрения безопасности.
Теперь моя проблема в управлении ролями. Мне нужно изменить запросы так, чтобы у пользователя foo были права администратора, а у пользователя bar — нет. Это должно быть так же просто, как установить один параметр GET, например "&role=admin"
, но я не знаю, как это сделать при проксировании запросов.
Роли в настоящее время хранятся в выделенной базе данных MySQL, поэтому для получения привилегий нужен только запрос, который легко сделать в PHP. Моя проблема в том, что я не знаю, как сохранить поведение прокси, если я вызываю страницу php. Я хочу, чтобы каждый запрос имел добавленный параметр(ы) роли, но нужно сохранить остальную часть запроса без изменений.
Мой текущий прокси делает все с конфигурацией виртуального хоста (псевдоним .htaccess), но я понятия не имею, какой подход мог бы работать. Я не могу делать запросы MySQL в VHost, а перенаправление на страницу php будет -насколько я знаю- «сломать» концепцию прокси, так как я бы перенаправил, но, вероятно, потерял бы «другие параметры запроса», что мне не очень понятно, так как я никогда не пользовался прокси.
. Может ли mod_authn_dbd быть решением? Пока что мне не удалось войти с его помощью, но я не уверен, что он сможет решить мою потребность в добавлении параметра get.libapache2-mod-auth-mysql
Возможно, это было бы решением, но мод, похоже, устарел, так что я даже не смог его попробовать
У меня заканчиваются идеи.
Как я могу реализовать то, что мне нужно? Я почти уверен, что для такой распространенной потребности существует простое решение.
решение1
Единственное, что приходит на ум, — написать свой собственный простой прокси, например, на php/curl. Apache будет служить веб-сервером с поддержкой php, а php/curl будет проксировать запросы и изменять параметры GET в соответствии с предоставленным именем пользователя. Можно даже сделать аутентификацию с поддержкой cookie, а не только HTTP.
Вы также можете попробовать сделать то же самое, используя nginx, HTTP-аутентификацию и модуль lua nginx, но это по сути то же самое, за исключением необходимости писать прокси на lua — lua будет только решать, заслуживает ли пользователь роли администратора или нет, а nginx будет проксировать запросы и изменять аргументы GET.