Dovecot+Postfix собственная база данных пользователей

Я хочу использовать Postfix+Dovecot в качестве решения для электронной почты. У нас уже есть веб-сайт с запущенной Woltlab Burning Board. Некоторые из этих пользователей (сотрудники службы поддержки, модераторы, разработчики) получат адрес электронной почты.

Самый удобный способ (как администратор) — использовать учетные данные для входа с записывающей платы. Проблема в том, что я не смог проверить пароль. Burning Board использует хэши bcrypt с двойной солью, и я понятия не имею, как создать оператор mysql, который может сверять пароль с хэшем.

Вы можете увидеть проверку пароля здесь: https://github.com/WoltLab/WCF/blob/master/wcfsetup/install/files/lib/util/PasswordUtil.class.php (результат test123: $2a$08$15yH0BYHr2XVzdT64dmSQO1yBHOUU.HkB72J1eGQcKRu8FDC5RXMG ")

Есть ли способ проверить хэши паролей с двойной солью непосредственно в mysql? Если нет, могу ли я использовать php-скрипт для проверки учетных данных пользователя (я слышал, что SALS поддерживает это)?

Спасибо за вашу помощь!


person Sylvanas Garde    schedule 23.05.2015    source источник


Ответы (1)


Мне удалось написать простой PHP-скрипт для проверки пароля с помощью утилит, предоставленных WCF:

namespace wcf\util;
require("PasswordUtil.class.php");

$password = "test123";
$dbHash= "$2a$08$7EMZdBTk1SwHyCQApSGLL.8/rL.zEHpOAJgR3ogfBKW0epSWtXnLS";

$dsHash = PasswordUtil::getDoubleSaltedHash($password, $dbHash);

if (PasswordUtil::secureCompare($dbHash, $dsHash)) {
    echo "Password is valid.\n";
} else {
    echo "Password is invalid.\n";
}

Я не верю, что MySQL предоставляет вам удобный путь к функции bcrypt. Похоже, что WCF может быть вынужден предоставить вам другой хэш пароля (хотя это может потребовать изменений в исходном коде). В этом случае вы можете использовать функции шифрования MySQL SHA или AES, чтобы делать то, что вы хотите.

person Allen Luce    schedule 24.05.2015