7

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

编辑那些标记为太宽泛的人,请解释。

我可以通过本网站所述的 url 传递用户名和密码来使用 check_MK 自动登录:http://stichl.at/2014/04/check_mk-multisite-auto-login/
不认为这对我来说将是一个可行的选择,因为它似乎不安全,正如这个问题中详述的那样,在 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 代码。

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

4

1 回答 1

1

贾斯汀,

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

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

步骤1。在您的 PHP 代码中,您可以访问原始密码...(妥善保存) Step2。在事务中(全部或不执行以下操作)将该特定用户在 ldap 中的密码设置为您刚刚生成的随机密码 b. 将该密码传递到该 check_mk 页面 c。身份验证完成后,从您的 PHP 页面将 ldap 密码设置回原始密码。

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

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

于 2015-05-07T10:50:01.953 回答