在站点之间传递凭据

nic*_*ckf 5 security passwords joomla moodle single-sign-on

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

我想做的是:在有人登录到Joomla网站后,提供一个Moodle网站的链接,该网站将默默登录,有点伪造单点登录解决方案.Joomla中的密码是MD5'd,每个密码都有自己的秘密盐.

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

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

有什么想法吗?

dr.*_*vil 4

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

  • 为 Joomla 用户生成随机(使用 PRNG)令牌(存储此)
  • 在内部发送此令牌(通过 Web 服务等,通过 HTTPS 或本地数据源保留它)到 Moodle
  • 在发送此令牌时,您还应该告知 Moodle 令牌所属的用户 ID(因此发送令牌 + 用户 ID)
  • 将此令牌 + 用户 ID 存储在 Moodle 中
  • 使用此令牌在 Joomla 中创建带有此令牌的链接(首次使用后令牌过期后,您可以使用查询字符串,但 POST 是更好的主意)
  • 当您在 Moodle 中看到此令牌时,请登录关联的用户并使令牌过期(这样就可以安全地抵御回复攻击等)