1

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

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

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

我们正在为 Wordpress 和 Cake 之间不同的密码散列策略而苦苦挣扎。为了在两个表中保存相同的用户密码,我们需要弄清楚如何对其进行哈希处理,以便每个各自的框架都可以检查它。

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

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

4

1 回答 1

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 密码和盐(单独的字段?带分隔符的单个字段?)。您可能必须编写自己的授权对象,该对象将从数据库中选择正确的“盐”
于 2013-04-02T22:17:48.490 回答