与Chamilo LMS的Wordpress SSO - 在背景中登录到chamilo

时间:2013-12-31 20:18:39

标签: php wordpress curl

我正在努力将WordO(站点A)的SSO设置为Chamilo 1.9.6(站点B)。

我已经完成了在成功登录WP后尝试将我登录到chamilo的脚本。

脚本代码:基于chamilo文档(chamilo有自己的SSO模块)

function log_me_to_chamilo($username,$password) 
{
$chamilo_server_url = 'http://example.com/elearning/platform/';
$auth_server_url = 'http://example.com/elearning/';
$password = md5($password);
$sso = array(
        'username'          => $username,
        'secret'            => $password,
        'master_domain'     => $chamilo_server_url,
        'master_auth_uri'   => $auth_server_url,
        'lifetime'          => time() + 3600,
);
$cookie = base64_encode(serialize($sso));
$params = 'sso_referer='. urlencode($auth_server_url) .'&sso_cookie='. urlencode($cookie);
$final_url = $chamilo_server_url .'?'. $params;
header('Location: '.$final_url);
exit;
}

这很好但是毕竟重定向到了chamilo LMS平台(站点B),我想在后台进行。所以基本上我想要这样的东西。

用户登录网站A - > WordPress的 如果所有登录数据都正常,我们登录到Wordpress。 在wordpress日志用户之后我想在后台登录chamilo站点B - 我们留在站点A但是当用户进入站点B - (例如站点A中的链接) - 他将被插入。

我试图使用curl和cookies,但这对我来说是新的,只有工作的例子也会将我重定向到Site B.

如果有人能指出我正确的方向如何在后台登录网站b中的用户。我应该用curl或其他东西做ajax吗?

2 个答案:

答案 0 :(得分:2)

Chamilo SSO机制并没有为“后台登录”做好准备(让我们这样称呼)。

如果您希望用户的浏览器从Chamilo获取会话cookie并保留它,那么必须以某种方式加载Chamilo网站。

然后,你可以做的是让你的Wordpress插件打开一个新的单像素弹出窗口或iframe,它将加载Chamilo并登录。

例如,您可以在用户登录到您的Wordpress网站后获取的页面上定义一个(不可见/非常小)的iframe,然后让 iframe 加载Chamilo站点并进行连接。当iframe加载Chamilo站点时,它会将cookie数据保存到您的浏览器中,并且您的浏览器随时可以在会话到期之前随时转到Chamilo。

如果你上面的函数返回$ final_url而不是重定向,你可以使用它 <iframe src="'.log_me_to_chamilo('sam','max').'"></iframe> (包括各种模板和之前特定于Wordpress的东西)

这没有经过测试,但逻辑对我来说似乎没问题。

如果你能够使用它并且它是免费软件,请不要犹豫在info~at~chililo~dot~org报告,以便我们可以在我们的连接器列表中包含它。我知道有几个人对Wordpress Single Sign On插件有疑问,我们团队中没有任何Wordpress人员,所以我们真的很感激。

答案 1 :(得分:1)

我还有一个额外的问题。对不起ywarnier,我没有回复,但我在2013年放弃了该项目。我现在回来了这个新的1.10版本的chamilo看起来很神奇。我做了sso登录becouse chamilo和wordpress用相同的方式加密密码(md5)所以我只是用sso_secret发送md5 - 我将worddpress的md5与来自chamilo的md5进行匹配。但是在v1.10中我们得到了盐,我必须知道如何将md5密码传递给chamilo并验证。