2008-12-09 54 views
5

我在两个不同的服务器上运行两个不同的站点,并使用两个不同的域。一个网站正在运行另一个Moodle Joomla。我已经配置了Moodle服务器,将其认证基于Joomla站点上的用户表,因此我们拥有权威的用户信息来源。在站点之间传递凭据

我想做的是这样的:在有人登录到Joomla网站后,提供一个到Moodle网站的链接,它将悄悄地登录他们,这有点伪造单点登录解决方案。 Joomla的密码是MD5'd,每个都有自己的秘密盐。

关于如何解决这个问题的第一个想法是告诉Moodle密码以纯文本形式存储,然后通过隐藏的表单输入,当他们点击链接时发送加密的密码。除了明显的安全问题之外,这也意味着如果他们尝试通过Moodle界面登录,他们需要输入一个巨大的MD5字符串,因为这正是Moodle认为他们的密码。

我一直在考虑改变Moodle中的认证模块,这样如果提交的密码符合某些标准(例如:它是32个十六进制字符),那么在比较Joomla版本之前不要MD5它 - 这个问题任何人都可以(在发现加密密码后)使用该密码登录。我需要的是将加密密码从Joomla发送到Moodle并发信号给Moodle以不同方式处理登录请求的特殊方式。

有什么想法?

回答

4

你可以做以下的安全单点登录的一个解决方案:

  • 生成一个随机的(与PRNG)基于令牌为Joomla用户(存储此)
  • 发送该令牌内部(通过Web服务等,-keep过来HTTPS-,或本地数据源)一定要看
  • 虽然发送此令牌也应该告知的Moodle哪些令牌是属于用户ID(因此发送令牌+用户ID)
  • 将此令牌+用户标识存储在Moodle
  • 使用此令牌在Joomla中使用此令牌创建链接(您可以在第一次使用后尽快使用令牌,但POST是更好的主意)
  • 当您在Moodle中看到此令牌时,并过期令牌(所以这将是安全的回复攻击等)
0

如果您使用的是Joomla! 1.5,不要忘记用户插件。看看plugins/user/example.php。您可以在onLoginUser事件中捕获密码,这可以帮助您桥接系统。

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

您的milage可能会有所不同,试图在不同的域使用这些解决方案