簡體   English   中英

允許Ejabberd和CakePHP 3使用相同的用戶表和密碼

[英]Allow both Ejabberd and CakePHP 3 use same users table and passwords

我正在開發一個使用cakePHP 3的Web應用程序。我正在運行該應用程序,我需要在我的應用程序中添加ejabberd 15.x聊天。

我已將jabber配置為使用odbc mysql和users數據庫表(cakephp使用的同一用戶表)。

現在,問題是,我的Web應用程序可以使用cakephp的bcrypt密碼哈希器很好地登錄/注冊用戶。 但是,由於密碼是哈希值,因此ejabberd使用純文本密碼無法登錄這些用戶。

我可以在cakephp中禁用密碼哈希並使其以這種方式工作,但是,我寧願使用哈希提供的額外安全性,並在ejabberd端啟用完全相同的bcrypt哈希,因此它可以使用Cakephp生成的哈希登錄。

有沒有一種方法可以使ejabberd和cakephp3哈希密碼完全相同?

創建擴展AbstractPasswordHasher的類應該可以解決問題。 遵循用於FallbackPasswordHasher的模式。

http://api.cakephp.org/3.0/class-Cake.Auth.Abs​​tractPasswordHasher.html

然后配置系統以使用新類:

http://book.cakephp.org/3.0/en/controllers/components/authentication.html#changing-hashing-algorithms

(以下引用為例)

更改哈希算法

CakePHP提供了一種將用戶密碼從一種算法遷移到另一種算法的干凈方法,這是通過FallbackPasswordHasher類實現的。 假設您正在從使用sha1密碼哈希的CakePHP 2.x遷移應用程序,則可以按以下方式配置AuthComponent:

public function initialize()
{
    parent::initialize();
    $this->loadComponent('Auth', [
        'authenticate' => [
            'Form' => [
                'passwordHasher' => [
                    'className' => 'Fallback',
                    'hashers' => [
                        'Default',
                        'Weak' => ['hashType' => 'sha1']
                    ]
                ]
            ]
        ]
    ]);
}

出現在hashers鍵中的名字指示哪個類是首選類,但是如果檢查不成功,它將退回到列表中的其他類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM