[英]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.AbstractPasswordHasher.html
然后配置系統以使用新類:
(以下引用為例)
更改哈希算法
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.