Защитить URL-адрес от неавторизованных пользователей без запроса на вход в систему?

Защитить URL-адрес от неавторизованных пользователей без запроса на вход в систему?

Я пытаюсь защитить веб-приложение (панель управления Kibana), в котором нет встроенного процесса аутентификации пользователя. Я хотел бы защитить это веб-приложение так, чтобы только пользователи, вошедшие на наш сайт WordPress, могли открывать URL веб-приложения, не запрашивая у них повторной аутентификации.

окружающая среда:

Apache 2.4 на Centos 7

Я тщательно изучил все области, с которыми я знаком: я пытался использовать Apache mod_authnz_external, который использует локальный скрипт perl для аутентификации. Это делает то, что мне нужно, но я не могу обойти приглашение на вход в систему, что является препятствием.

Я пробовал использовать mod_rewrite и rewriteMap для перенаправления URL-адресов Kibana на локальный скрипт Perl для проверки аутентификации. Это работает, но затем я не могу понять, как затем вернуть пользователя на перенаправленный URL-адрес, не вызывая исходного соответствия перезаписи.......

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

Я пометил этот вопрос как Apache 2.4, поскольку предпочел бы решить эту проблему с помощью Apache, но я открыт и для других идей.

заранее благодарю за ваши комментарии

решение1

Вы всегда можете применить немного PHP-магии, чтобы это произошло — таким образом вы сможете напрямую подключиться к функциям аутентификации WordPress и поддерживать их в актуальном состоянии по мере обновления WordPress.

Необходимая функция для определения того, вошел ли кто-то в систему, описана здесь:https://developer.wordpress.org/reference/functions/is_user_logged_in/

Это непроверенный/нефункциональный код, поэтому потребуются доработки, но суть такова:

    require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');

    if (is_user_logged_in()) {
        $url = $_REQUEST['url'];
        $transformedBackendURL = changeHostnameandStuff($url);
        $content = file_get_contents($url);
        // parse all links and forms actions and redirect back to this script
        $content = preg_replace("/some-smart-regex-here/i", "$1 or $2 smart replaces", $content);
        echo $content;
    } else {
        header('HTTP/1.0 403 Forbidden');
        echo 'You are forbidden!';
    }

решение2

Может быть, вы можете отправить зашифрованный ключ с URL, который содержит имя пользователя и IP ... и т. д., затем расшифровать его и использовать curl для проверки информации о пользователе на другом сервере. Надеюсь, это даст вам некоторые идеи

Связанный контент