Как я могу реализовать возможность единого входа с Check_MK?

Я работаю над сайтом типа приборной панели. У нас есть страница входа, реализованная в php, которая аутентифицируется на сервере LDAP. У нас также есть страница Check_MK, которая имеет собственный диалог входа в систему, который аутентифицируется на том же сервере LDAP. Я бы хотел, чтобы пользователю не приходилось повторно вводить свои учетные данные в диалоговом окне входа в Check_MK. Я бы предпочел, чтобы учетные данные, введенные на нашей странице входа в php, передавались в Check_MK, чтобы аутентификация могла выполняться без взаимодействия с пользователем. Это возможно? Если да, то как мне это сделать?

редактировать
для тех, кто отметил это как слишком широкое, пожалуйста, объясните.

Я смог получить автоматический вход с помощью check_MK, передав имя пользователя и пароль через URL, как описано на этом сайте: http://stichl.at/2014/04/check_mk-multisite-auto-login/
Я не думаю, что это будет жизнеспособным вариантом для меня, хотя, как представляется, небезопасно, как подробно описано в этом вопросе Безопасно ли передавать учетные данные для входа в виде простого текста в URL-адресе HTTPS?

Хотя с открытым исходным кодом, я не могу изменить файл checkMK login.py из-за его лицензии GNU. Помимо передачи учетных данных через URL в виде обычного текста, как я могу использовать учетные данные, предоставленные на моей странице входа в php, для автоматического входа на страницу check_MK?

Ниже приведен код php / html, где я открываю экран входа в Check_MK.

<script type="text/javascript">
var version = global.dashboard_version;
console.log("version = " + version);
var url = global.ips[version+"_nagios_iframe"];
var suffix = <?php echo "'".
'&_username='.
$_SESSION['username'].
'&_password='.
$_SESSION['password'].
"&_login=1'";?>;
console.log("suffix = "+suffix);
url = url + suffix;
console.log("url = "+url);
document.getElementById("nagiosiframe").src = url;
</script>

Код для входа в Check_MK можно найти здесь: https://github.com/sileht/check_mk/blob/master/web/htdocs/login.py

Соответствующая функция называется do_login и находится в строке 147.

В частности, я не знаю, как безопасно передавать значения моих переменных сеанса (имя пользователя и пароль) в код login.py.

Это мое первое знакомство с любым из этих языков и технологий. Даже предложения по поисковым запросам будут оценены.

7

Решение

Джастин,

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

Теперь с этим ограничением, это вариант, который я использовал в прошлом и мог бы работать для вас.

Шаг 1. В вашем PHP-коде у вас есть доступ к исходному паролю … (храните его в надежном месте)
Шаг 2. Внутри транзакции (все или ничего, выполните следующее)
а. Установите пароль в ldap для этого конкретного пользователя на случайный пароль, который вы только что сгенерировали
б. Передайте этот пароль на страницу check_mk
с. как только аутентификация завершится, со своей страницы PHP верните исходный пароль ldap.

Таким образом, вы не будете передавать реальный пароль и будете выполнять единый вход между вашим php и страницей check_mk.

Если бы вы могли изменить check_mk, я бы дал вам другие ответы. Дайте мне знать, если это работает.

1

Другие решения

Других решений пока нет …