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

Sie*_*geX 5 encryption svn sasl

我正在尝试svnserve在我的 Slackware 13.1 服务器上使用 SASL 支持进行设置,经过一些试验和错误后,我能够使其与下面列出的配置一起使用:

配置文件

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

[sasl]
use-sasl = true
min-encryption = 128
max-encryption = 256
Run Code Online (Sandbox Code Playgroud)

/etc/sasl2/svn.conf

pwcheck_method: auxprop
auxprop_plugin: sasldb
sasldb_path: /etc/sasl2/my_sasldb
mech_list: DIGEST-MD5
Run Code Online (Sandbox Code Playgroud)

sasldb 用户

$ sasldblistusers2 -f /etc/sasl2/my_sasldb
test@myrepo: cmusaslsecretOTP
test@myrepo: userPassword
Run Code Online (Sandbox Code Playgroud)

您会注意到,输出sasldblistusers2显示我的测试用户具有加密的cmusaslsecretOTP密码和纯文本 userPassword密码。即,如果我要运行,strings /etc/sasl2/my_sasldb我会以明文形式看到测试用户的密码。这两个密码条目是使用以下 subversion book 推荐命令创建的:

saslpasswd2 -c -f /etc/sasl2/my_sasldb -u myrepo test
Run Code Online (Sandbox Code Playgroud)

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

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

这正是我想要做的,取消纯文本密码,只使​​用特定于机制的秘密(在我的例子中是 OTP)。所以我清除/etc/sasl2/my_sasldb并重新运行saslpasswd2

saslpasswd2 -n -c -f /etc/sasl2/my_sasldb -u myrepo test
Run Code Online (Sandbox Code Playgroud)

然后我用 a 跟进它sasldblistusers2,我看到:

$ sasldblistusers2 -f /etc/sasl2/my_sasldb
test@myrepo: cmusaslsecretOTP
Run Code Online (Sandbox Code Playgroud)

完美的!我想,现在我只有加密的密码......只有 Linuxsvn客户端和 WindowsTortoiseSVN客户端都不能再连接到我的仓库。他们都向我展示了用户/通行证挑战,但就我所知。


TLDR

那么,如果我的 sasldb必须以明文形式存储其密码才能工作,那么 SVN 支持 SASL 的意义何在?

And*_*eKR 1

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

其他消息来源另有说法: