Subversion 1.6 + SASL:仅适用于纯文本“userPassword”?

Subversion 1.6 + SASL:仅适用于纯文本“userPassword”?

我正在尝试在我的 Slackware 13.1 服务器上设置svnserveSASL 支持,经过反复试验后,我能够让它使用下面列出的配置:

svnserve.conf

[general]
anon-access = read
auth-access = write
realm = myrepo

[sasl]
use-sasl = true
min-encryption = 128
max-encryption = 256

/etc/sasl2/svn.conf

pwcheck_method: auxprop
auxprop_plugin: sasldb
sasldb_path: /etc/sasl2/my_sasldb
mech_list: DIGEST-MD5

sasldb 用户

$ sasldblistusers2 -f /etc/sasl2/my_sasldb
test@myrepo: cmusaslsecretOTP
test@myrepo: userPassword

你会注意到输出sasldblistusers2显示了我的测试用户同时拥有加密cmusaslsecretOTP密码以及纯文本 用户密码passwd。也就是说,如果我运行,strings /etc/sasl2/my_sasldb我会看到测试以明文形式显示用户的密码。这两个密码条目是使用以下命令创建的:

saslpasswd2 -c -f /etc/sasl2/my_sasldb -u myrepo test

阅读后man saslpasswd2我看到以下选项:

-n 不要为用户设置明文 userPassword 属性。仅会设置特定于机制的秘密(例如 OTP、SRP)

这正是我想要做的,隐藏纯文本密码并仅使用特定于机制的秘密(在我的情况下是 OTP)。因此我清除/etc/sasl2/my_sasldb并重新运行saslpasswd2

saslpasswd2 -n -c -f /etc/sasl2/my_sasldb -u myrepo test

然后我继续跟进sasldblistusers2,看到:

$ sasldblistusers2 -f /etc/sasl2/my_sasldb
test@myrepo: cmusaslsecretOTP

完美的!我想,现在我只有加密的密码了……只是 Linuxsvn客户端和 WindowsTortoiseSVN客户端都无法再连接到我的存储库。它们都向我提供了用户/密码挑战,但我只能做到这些。


结论

那么,如果我的 sasldb必须以纯文本形式存储密码可以工作吗?

答案1

这几乎不是一个答案,但我想指出,有些消息来源明确指出,DIGEST-MD5 不(并且永远不会)支持散列密码,因为它需要纯文本密码来执行质询/响应,例如:

其他消息来源则表示:

相关内容