【问题标题】:Password Hashing for SSO between Wordpress and CakePHPWordpress 和 CakePHP 之间 SSO 的密码散列
【发布时间】:2013-03-24 08:19:19
【问题描述】:

我们有一个 Wordpress 网站,我们将使用 cakePHP 框架逐步重建它。我们将逐步替换 Wordpress 站点的不同部分,因此我们需要实现某种单点登录,以便在两个框架并行运行期间允许跨两个框架进行授权。

我们有一个很好的策略来做到这一点。简而言之,我们将在两个不同的表中复制所有用户行:一个表用于 Wordpress (wp_users),另一个表用于 Cake (users)。 [更多细节概述here(如果您有兴趣)。]

这意味着当我们在 Wordpress 或 Cake 中创建用户时,我们也会在另一个表中创建相同的用户。这是“几乎无害的”......

我们正在努力解决 Wordpress 和 Cake 之间不同的密码散列策略。 为了在两个表中保存相同的用户密码,我们需要弄清楚如何散列它,以便每个相应的框架都可以检查它。

Wordpress 使用非常先进的散列算法:PHPass。 Cake(默认情况下)似乎提供了更传统的算法选择:SHA1、md5、blowfish... 可选加盐。我们坚持 Wordpress 生成/通过电子邮件向新用户发送默认密码,然后立即保存数据库中的散列版本。这个密码的散列版本对 cake 毫无用处,除非我们能弄清楚如何复制所有的 Wordpress 授权协议(这对于 Cake 的新用户来说似乎有些令人生畏)。

这个问题有什么优雅的解决方案吗?

【问题讨论】:

    标签: wordpress cakephp authorization cakephp-2.0 single-sign-on


    【解决方案1】:

    我建议将用户管理集中在 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 密码和盐(单独的字段?带分隔符的单个字段?)。您可能需要编写自己的 Authorize Object,以便从数据库中选择正确的“盐”

    【讨论】:

    • 您回答中的第二个要点更多地说明了我想要弄清楚的内容。这是关于 CakePHP 和 PHPass (bcrypt/blowfish) 之间重叠的有趣观察,但我不确定如何使用该信息。
    • FWIW,这是 WordPress 用来散列密码的类,使用 HashPassword() 方法:core.trac.wordpress.org/browser/trunk/wp-includes/…
    猜你喜欢
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 2015-02-17
    • 2018-07-29
    相关资源
    最近更新 更多