Horde 和 Dovecot 的 SHA512-CRYPT:无法使用自定义 SQL 查询进行连接

Horde 和 Dovecot 的 SHA512-CRYPT:无法使用自定义 SQL 查询进行连接

成功将 dovecot 和 roundcube 中的身份验证机制从 MD5 切换到 SHA512-CRYPT 后,我努力让 Horde 使用自定义 SQL 查询进行身份验证。

设置$conf['auth']['params']['encryption'] = 'crypt-sha512';没有太大帮助。

不知何故,占位符返回的哈希\P似乎被截断了:它是很多太短,等于输出crypt-sha256,除此之外甚至看起来都不正确。不用说,它与数据库中的哈希不匹配。

通过 Google 搜索并没有真正找到答案,所以我依赖于你的知识。这家伙似乎至少有一个稍微相似的设置,并正在获得合理的哈希值。

这是 php 问题还是 horde 问题?还是只有我一个人有这种问题?

答案1

啊啊。好的。我发现我的错误了。为了确定密码,我还需要修改查询,因为我必须删除前导的 {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)';

有用:)

答案2

$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 查询。它不是像第一个问题中预期的那样工作吗?

相关内容