PHPMyAdmin 单点登录身份验证无限重定向循环

Posted

技术标签:

【中文标题】PHPMyAdmin 单点登录身份验证无限重定向循环【英文标题】:PHPMyAdmin Single Signon Authentication Infinite Redirect Loop 【发布时间】:2013-03-13 09:48:19 【问题描述】:

我正在尝试使用 phpmyadmin 为控制面板创建单点登录平台。我已经准备好教程和相关文档。我安装了 phpmyadmin 并更改了配置文件和登录脚本,如下所示:

config.inc.php:

<?php
$i = 0;
$i++;
$cfg['Servers'][$i]['extension']     = 'mysql';
$cfg['Servers'][$i]['auth_type']     = 'signon';
$cfg['Servers'][$i]['SignonSession'] = 'TEST';
$cfg['Servers'][$i]['SignonURL']     = 'pma.php';
?>

pma.php:

<?php
session_set_cookie_params(0, '/', '', 0);
session_name('TEST');
session_start();
$_SESSION['PMA_single_signon_user'] = 'root';
$_SESSION['PMA_single_signon_password'] = 'ROOTPASSWORDHERE';
$_SESSION['PMA_single_signon_host'] = 'localhost';
session_write_close();
header('Location: ./index.php?server=1');
?>

不幸的是,当我在浏览器中访问 phpmyadmin URL 时,它会在 pma.php 和 index.php 之间自动循环,但实际上从未登录 phpmyadmin。 Firefox 最终捕获并停止它“Firefox 检测到服务器正在以永远不会完成的方式重定向该地址的请求。”

关于我的设置的一些细节:

为此,我在 debian 6 上使用 nginx 和 php5-fpm。我使用 apt-get 安装 phpmyadmin,安装后我为它创建了一个工作 nginx 配置。然后我通过手动输入root用户名和密码来测试phpmyadmin,它工作正常。

这只是一个测试,因此我不会对连接到服务器的任何人进行“自动身份验证”,我只是想让它工作,所以我已经尽可能多地从 pma.php 中剥离脚本。

【问题讨论】:

您找到解决方法了吗?我一直在与同样的问题作斗争...... 我确实做到了。(参见:github.com/Feathur/Feathur/blob/Testing/feathur/includes/… 和 github.com/Feathur/Feathur/blob/Testing/feathur/includes/…)——在我的情况下,在管理员会话中拥有“7”权限的用户。您需要确保您的 phpmyadmin 和您的其他应用程序都使用相同的 cookie 进行会话。 好的,谢谢。那么一定是不同的东西..两个应用程序都使用相同的cookie名称,并且权限等没有任何问题。不确定laravel是否破坏了某些东西。 你确定你的配置引用了正确的cookie吗? $cfg['Servers'][$i]['SignonSession'] = 'cookie_name'; 是的。还通过浏览器检查是否存在正确的 cookie 名称.... 【参考方案1】:

要停止重定向,建议将 pma.php 的代码更改为一点点

   <?php
         session_set_cookie_params(0, '/', '', 0);
         session_name('TEST');
         session_start();
         $_SESSION['PMA_single_signon_user'] = 'root';
         $_SESSION['PMA_single_signon_password'] = 'ROOTPASSWORDHERE';
         $_SESSION['PMA_single_signon_host'] = 'localhost';
         session_write_close();

         if( !isset($_GET[server]))
            header('Location: ./index.php?server=1');
         

    ?>

【讨论】:

这至少对我不起作用。你能解释一下为什么这会有所帮助吗?

以上是关于PHPMyAdmin 单点登录身份验证无限重定向循环的主要内容,如果未能解决你的问题,请参考以下文章

PassportJs 身份验证无限循环和执行(默认)查询

成功登录后的 Node.js Express 无限重定向循环

Spring Boot + Oauth 2单点登录ridirect uri错误行为

Laravel - 具有多重身份验证的未经身份验证的重定向问题

Keycloak 无限重定向

如何将已通过身份验证的用户从登录页面重定向到主页