после успешного переключения механизма аутентификации в dovecot и roundcube с MD5 на SHA512-CRYPT, мне трудно заставить Horde аутентифицироваться с помощью пользовательских запросов SQL.
Параметр $ conf ['auth'] ['params'] ['encryption'] = 'crypt-sha512';
не очень помогает.
Почему-то хэш, возвращаемый заполнителем \ P
, кажется усеченным: он намного слишком короткий, соответствует результату crypt-sha256
и, кроме того, даже не выглядит правильным. Разумеется, он не совпадает с хешем в базе данных.
Поиск в Google не привел к ответу, поэтому я полагаюсь на ваши знания. Этот парень , похоже, имеет хотя бы немного похожую настройку и получает разумные хэши.
Это скорее проблема php или орда? Или это только я?
Аааа. Хорошо. Нашел свою ошибку. Для определения пароля мне также нужно изменить запрос, так как мне нужно удалить начальный {SHA512-CRYPT}:
$conf['auth']['params']['query_getpw'] = 'SELECT SUBSTRING_INDEX(password,\'}\',-1) FROM virtual_users WHERE email = \L';
, тогда
$conf['auth']['params']['query_auth'] = 'SELECT * FROM virtual_users WHERE email = \L AND password = concat(\'{SHA512-CRYPT}\',\P)';
работает :)
$conf['auth']['params']['query_auth'] = 'SELECT * FROM virtual_users WHERE email = \L AND password = concat(\'{SHA512-CRYPT}\',ENCRYPT(\P, SUBSTRING_INDEX(`password`,\'}\',-1)))';
и
$conf['auth']['params']['encryption'] = 'plain';
мне кажется, работают. Но я бы предпочел иметь SQL-запрос без пароля в виде обычного текста. Разве это не работает так, как задумано в первом вопросе?