5

我在具有两个不同域的两个不同服务器上运行两个不同站点。一个站点正在运行 Joomla,另一个站点正在运行 Moodle。我已将 Moodle 服务器配置为基于 Joomla 站点上的用户表进行身份验证,因此我们拥有用户信息的权威来源。

我想做的是:在有人登录 Joomla 站点后,提供一个指向 Moodle 站点的链接,该站点将静默登录,有点假装单点登录解决方案。Joomla 中的密码是 MD5 的,每个都有自己的秘密盐。

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

我一直在考虑更改 Moodle 中的身份验证模块,以便如果提交的密码符合某些标准(例如:它是 32 个十六进制字符),那么在与 Joomla 版本进行比较之前不要对其进行 MD5 处理——问题是任何人都可以(在发现加密密码后)然后使用它登录。我需要一些特殊的方式将加密密码从 Joomla 发送到 Moodle,并向 Moodle 发出信号以区别对待该登录请求。

有什么想法吗?

4

3 回答 3

4

您可以对安全单点登录解决方案执行以下操作:

  • 为 Joomla 用户生成一个随机(使用 PRNG)令牌(存储这个)
  • 在内部(通过 Web 服务等,通过 HTTPS 或本地数据源保存)将此令牌发送到 Moodle
  • 在发送此令牌时,您还应告知 Moodle 属于哪个令牌的用户 ID(因此发送令牌 + 用户 ID)
  • 将此令牌 + 用户 ID 存储在 Moodle 中
  • 使用此令牌在 Joomla 中创建带有此令牌的链接(您可以在首次使用后令牌过期后立即使用查询字符串,但 POST 是一个更好的主意)
  • 当您在 Moodle 中看到此令牌时,请登录相关用户并使令牌过期(这样就可以安全地防止回复攻击等)
于 2008-12-09T09:52:52.737 回答
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(谨慎使用!)。

尝试跨不同域使用这些解决方案时,您的经验可能会有所不同。

于 2009-05-02T15:03:52.957 回答
0

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

于 2008-12-09T14:32:14.467 回答