通过外部网站登录Moodle

时间:2014-04-21 13:26:24

标签: authentication external moodle

我正在设置Moodle环境,我需要用户能够使用来自 站点的凭据通过外部站点登录。理想情况下,他们会访问网站,登录,然后点击一个按钮,将其发送给Moodle以及他们的帐户信息。

一旦他们到达Moodle,Moodle将检查帐户信息是否已经存在。如果是这样,它将登录,否则它将创建帐户并登录。

我已经设置了Moodle环境以及登录站点。 Moodle站点不允许访问登录站点上的数据库,用户不必在任何时候再次输入他们的信息。

我已经花了几个小时试图从Muts和社交网站(Facebook,Twitter,谷歌+等)之间完成类似的插件向后工作,但没有取得任何进展,以及链接Moodle的插件和Joomla一起,我在这里和其他论坛搜索了我能找到的类似于我需要完成的任何事情都无济于事。任何帮助都将非常感激。

编辑:我忘了提到Moodle版本是2.5.4

编辑:以下内容将创建一个新用户,其数据已发布到“login / index.php”页面。这在目前非常不完整,在生产服务器上实现可能很危险。我将继续发布更新版本,欢迎提出建议。

    global $CFG, $DB;
    require_once($CFG->dirroot.'/user/profile/lib.php');
    require_once($CFG->libdir.'/authlib.php');

    $newuser = $DB->get_record('user', array('id'=>'1'));
    $newuser->auth = 'manual';
    $newuser->username = $frm->username;
    $newuser->password = hash_internal_user_password($frm->password);

    $newuser->username = $DB->insert_record('user', $newuser);

    /// Save any custom profile field information
    profile_save_data($newuser);

    $newuser = $DB->get_record('user', array('id'=>$newuser->username));
    events_trigger('user_created', $newuser);

2 个答案:

答案 0 :(得分:1)

使用外部数据库身份验证可能是最容易设置的,尤其是当两个系统位于同一服务器上时。

转到网站管理员>插件>身份验证>管理插件 - >单击“外部数据库”旁边的取消隐藏按钮

然后单击设置并添加数据库的连接详细信息,外部表的名称(如果数据来自多个表,则创建视图)并添加字段映射。

http://docs.moodle.org/26/en/External_database_authentication

或者,我会将SimpleSAML插件与LDAP一起使用 - 假设你有一个LDAP服务器 - 大约需要一天的时间来设置和搞乱设置。

https://moodle.org/plugins/view.php?plugin=auth_saml

答案 1 :(得分:0)

有一个类似的问题,我正在考虑一种方法

  • 让主站点每天创建一个包含注册信息的额外数据库。我想提供它作为SqLite文件,但似乎moodle外部数据库插件不支持SqLite数据库。

  • 取决于用户名和主站点上的访问控制逻辑显示菜单“moodle”

  • 如果用户点击“moodle”,则使用用户名和moodle与主站点之间的秘密令牌对moodle登录进行发布请求。

  • 为moodle实现一个简单的身份验证插件,要求主站点确认用户仍然登录。它将使用共享密钥令牌。如果主站点未确认用户已登录,则重定向到主站点的登录页面。

但我不确定是否

  • 方法确实有效
  • 方法合适
  • 该方法已由某人实施

我调查了像shiboleth这样的SSO,但它看起来非常复杂,特别难以实现,因为我们的主站点已经有了一个身份验证方法。