这也许是一件奇怪的事情,但是我有理由。
我的 dovecot 身份验证由从 SQL 检索的数据提供,到目前为止一切正常。我的密码采用适当的格式{scheme}data
,所以没问题。当我有两个用户名相同的用户时,问题就开始了。当我这样做时,我收到此错误:
auth-worker(32489): Error: sql(__variables__): Password query returned multiple matches
好吧,胡说。有什么想法可以解决这个问题吗?
- 我考虑使用 %w 变量来过滤 sql 结果,但由于密码可能采用不同的方案,因此我无法进行直接测试。
- 我考虑使用 %w 变量和存储过程来找到正确的结果,但随后我必须在 sql 中执行所有散列操作,这很浪费时间。
- 我可以让多个不同的登录共享相同的 maildir 以使检索部分表现相同,但创建更多的用户名是我不想做的。
我提到的原因是什么?我有两个用例:
- 电子邮件登录模型看起来更像 API 密钥。创建一个用户名,但为每个连接到它的客户端设置一个单独的密码,如果一个密码被破解,您可以撤销它而不必更改所有登录信息。
- 不同的非明文身份验证机制具有不同的中间产品。您可以存储中间产品,而不是存储明文。为了举例说明,您可以存储 CRAM-MD5、SHA256 和 OTP 方案的值。
有什么干净的方法可以使它工作吗?