2013-04-02 17 views
1

我們有一個Wordpress網站,我們將使用cakePHP框架逐步重建。我們將逐步替換Wordpress站點的不同部分,因此我們需要實施某種單點登錄,以便在兩個框架並行運行期間允許跨兩個框架進行授權。Wordpress和CakePHP之間的SSO密碼散列

對於如何做到這一點,我們有一個很好的策略。簡而言之,我們將複製兩個不同表中的所有用戶行:一個用於Wordpress的表(wp_users)和一個用於Cake的不同表(users)。 [更多細節here(如果你有興趣)。]

這意味着當我們在Wordpress或Cake中創建一個用戶時,我們也會在另一個表中創建相同的用戶。這是「大多無害」...

我們正在努力與Wordpress和Cake之間不同的密碼哈希策略。爲了在兩個表中保存相同的用戶密碼,我們需要弄清楚如何對它進行散列,以便每個相應的框架都可以檢查它。

WordPress的使用一個非常先進的哈希算法:PHPass。 Cake(默認情況下)似乎提供了更多傳統算法的選擇:SHA1,md5,blowfish ...以及可選的salting.We堅持Wordpress爲新用戶生成/發送默認密碼的事實,然後立即保存在數據庫中散列版本。除非我們能夠弄清楚如何複製所有的Wordpress授權協議(這對於新的Cake用戶來說似乎有點令人生畏),但這種散列版本的密碼對於蛋糕來說毫無用處。

有沒有一個優雅的解決方案來解決這個問題?

回答

0

我建議保持用戶管理集中在Wordpress或CakePHP中,直到遷移到CakePHP完成。

從CakePHP 2.3開始,bcrypt/blowfish官方支持哈希密碼; http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#using-bcrypt-for-passwords

但是,如果您已經有工作的單點登錄,爲什麼不離開密碼同步暫時?遷移到CakePHP完成後,請考慮以下選項;

  • 發送電子郵件給所有用戶包含一個獨特的鏈接重置他們的密碼;重置密碼實際上是在CakePHP中創建散列密碼並啓用新帳戶。之後,獨特的鏈接應該失效(也請確保鏈接在一段時間後過期)
  • 因爲CakePHP和PHPass都使用bcrypt/blowfish,所以當遷移時可以將散列密碼複製到CakePHP完成。但是,您需要確定「PHPass密碼和salt的存儲方式(單獨字段?帶分隔符的單個字段?)」。您可能需要編寫自己的Authorize Object,它會從數據庫中選擇正確的'salt'
+0

答案中的第二個要點說明了我想要弄清楚的內容。關於CakePHP和PHPass(bcrypt/blowfish)之間重疊的一個有趣的觀察,但我不確定如何使用這些信息。 – emersonthis

+0

FWIW,這裏是WordPress使用HashPassword()方法哈希密碼的類:http://core.trac.wordpress.org/browser/trunk/wp-includes/class-phpass.php – doublesharp