我在具有两个不同域的两个不同服务器上运行两个不同的站点。一个站点运行Joomla,另一个运行Moodle。我已经将Moodle服务器配置为基于Joomla站点上的users表进行身份验证,因此我们拥有权威的用户信息来源。
我想做的是:在有人登录Joomla网站后,提供一个指向Moodle网站的链接,该网站将默默登录,这是一种伪造单点登录解决方案。 Joomla中的密码是MD5,每个密码都有自己的秘密盐。
如何解决这个问题的第一个想法是告诉Moodle密码以纯文本形式存储,然后通过隐藏的表单输入,在点击链接时发送加密密码。除了显而易见的安全问题之外,它还意味着如果他们尝试通过Moodle界面登录,他们需要输入一个巨大的MD5字符串,因为这是Moodle认为他们的密码。
我一直在考虑更改Moodle中的身份验证模块,以便如果提交的密码符合某些条件(例如:它是32个十六进制字符),那么在与Joomla版本进行比较之前不要MD5它 - 问题是任何人都可以(在发现加密密码后)然后使用它来登录。我需要的是一些特殊方式将加密密码从Joomla发送到Moodle并发信号通知Moodle以不同方式处理该登录请求。
有什么想法吗?
答案 0 :(得分:4)
您可以针对安全的单点登录解决方案执行以下操作:
答案 1 :(得分:1)
你可以使用Pro Moodle(http://www.promoodle.com/)或JFusion(http://www.jfusion.org/)这两个比例来为Joomla / Moodle系统创建单一登录系统。
这里还有一个指南:http://myjoomlaextensions.com/images/fbfiles/files/MoodleBridge.pdf“在Moodle和Joomla之间架起桥梁。
有一条指南可以修改Moodle代码,在此处创建单一登录系统:http://moodle.org/mod/forum/discuss.php?d=45126#211486(谨慎使用!)。
尝试在不同的域中使用这些解决方案可能会有所不同。
答案 2 :(得分:0)
如果您正在使用Joomla! 1.5,不要忘记用户插件。看一下plugins / user / example.php。您可以在onLoginUser事件期间捕获密码,这可以帮助您桥接系统。