2008-12-09 56 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可能會有所不同,試圖在不同的域使用這些解決方案