在站点之间传递凭据

2024-02-21

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

我想做的是:在有人登录 Joomla 站点后,提供一个指向 Moodle 站点的链接,该链接将默默地让他们登录,有点伪造单点登录解决方案。 Joomla 中的密码经过 MD5 处理,并且每个密码都有自己的秘密盐。

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

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

有什么想法吗?


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

  • 为 Joomla 用户生成随机(使用 PRNG)令牌(存储此)
  • 将此令牌内部发送(通过 Web 服务等,通过 HTTPS 或本地数据源保存)到 Moodle
  • 在发送此令牌时,您还应该告知 Moodle 令牌所属的用户 ID(因此发送令牌 + 用户 ID)
  • 将此令牌 + 用户 ID 存储在 Moodle 中
  • 使用此令牌在 Joomla 中创建带有此令牌的链接(首次使用后令牌过期后,您可以使用查询字符串,但 POST 是更好的主意)
  • 当您在 Moodle 中看到此令牌时,请登录关联的用户并使令牌过期(这样就可以安全地抵御回复攻击等)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在站点之间传递凭据 的相关文章

随机推荐