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

我试图在我的Slackware 13.1服务器上设置svnserve和SASL支持,经过一些试验和错误,我可以使用下面列出的configuration:

的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的输出显示我的testing用户具有encryption的cmusaslsecretOTP密码以及纯文本 userPassword密码。 即,如果我要运行strings /etc/sasl2/my_sasldb我会以明文forms查看testing用户的密码。 这两个密码条目是使用以下颠覆本书推荐的命令创build的:

 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 

完善! 我想,现在我只有encryption的密码….只有Linux svn客户端和Windows TortoiseSVN客户端都不能连接到我的回购了。 他们都给我带来了用户/通过挑战,但是就我而言。


TLDR

那么,如果我的sasldb 必须以明文存储它的密码才能工作,SVN支持SASL又有什么意义呢?

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

其他消息来源说:

  • OpenLDAP,SASL和非明文密码存储
  • SASL + postfixadmin – 使用哈希密码的SMTPvalidation