如何使用Check_MK实现单点登录功能?

时间:2015-05-04 15:12:58

标签: php ldap single-sign-on check-mk

我正在开发一个仪表板类型的网站。我们在php中实现了一个登录页面,该页面针对LDAP服务器进行身份验证。我们还有一个Check_MK页面,它有自己的登录对话框,可以针对同一个LDAP服务器进行身份验证。我希望用户不必在Check_MK登录对话框中重新输入他们的凭据。我希望输入到我们的php登录页面的凭据可以传递给Check_MK,这样就可以在没有用户交互的情况下完成身份验证。这可能吗?如果是这样,我该怎么做?

编辑 对于那些标记为过宽的人,请解释。

我可以使用check_MK自动登录,方法是通过网址传递用户名和密码:http://stichl.at/2014/04/check_mk-multisite-auto-login/
我不认为这对我来说是一个可行的选择,因为它似乎是不安全的,正如这个问题所详述Is it secure to pass login credentials as plain text in an HTTPS URL?

虽然是开源的,但由于其GNU许可证,我无法修改checkMK login.py文件。除了通过纯文本URL传递凭证外,如何使用提供给我的php登录页面的凭据自动登录check_MK页面?

下面是我打开Check_MK登录界面的php / html代码。

<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代码。

这是我第一次接触这些语言和技术。即使是搜索术语建议也会受到赞赏。

1 个答案:

答案 0 :(得分:1)

贾斯汀,

由于您无法修改check_mk页面的代码,因此必须将凭据传递给它。如果不存在这种限制,那么有很多安全的方法可以做到这一点。

现在有了这个限制,这是我过去使用的一个选项,可以为你工作。

步骤1。在您的PHP代码中,您可以访问原始密码...(保持安全存储) 第2步。在一个事务中(全部或全部,执行以下操作)       一个。将该特定用户的ldap中的密码设置为您刚刚生成的随机密码       湾将该密码传递到该check_mk页面       C。验证完成后,立即从PHP页面将ldap密码设置回原始密码。

这样您就不会传递真实密码,也会在您的php和check_mk页面之间完成单点登录。

如果你可以修改check_mk,我会给你其他答案。让我知道这个是否奏效。