Subversion1.5引入了SASL库,这给了我们机会使用SASL提供的认证方式来为svnserve进行认证,本文介绍了Windows下的配置方式。
SASL� �心发布目前支持认证协议有:
- ANONYMOUS
- CRAM-MD5
- PLAIN
- GSSAPI (MIT Kerberos 5 or Heimdal Kerberos 5)
- DIGEST-MD5
也支持如下的认证协议:
- LOGIN
- SRP
- NTLM
- OTP
- KERBEROS_V4
Windows下这些模块可能都保存为dll,� 可以选择自己编译,也可以选择获取二进制程序,现在还不清楚官方的Subversion发布会不会包含所有的模块,但是现在已知的Collabnet Subversion包含了� 乎所有的模块,下载地址为:
http://merge-tracking.open.collab.net/servlets/ProjectProcess?pageID=3711
SASL配置
linux下的配置文件好说,windows下SASL配置文件需要使用注册表配置,要在� 的系统配置SASL,第一步就是设置注册表:
[HKEY_LOCAL_MACHINE\SOFTWARE\Carnegie Mellon\Project Cyrus\SASL Library]
"SearchPath"="C:\\Program Files\\CollabNet Subversion Server"
"ConfFile"="C:\\Program Files\\CollabNet Subversion Server"
这个是安装Collabnet Subversion时自动创建的,可以看到有两个键,其中“SearchPath”指明所有的扩展认证方式库存放的路径(那些dll),而ConfFile指明SASL配置文件的路径,在上面的配置里,配置文件应该是“C:\\Program Files\\CollabNet Subversion Server\\svn.conf”。下面看看我们的这个svn.conf文件:
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: ANONYMOUS CRAM-MD5
sasldb_path: C:\svn_repository\sasldb
其中pwcheck_method指明检查的方法,这里是“auxprop ”,这个pwcheck_method还对应了如启动一个代理作为认证服务等方式,而现在的意思就是使用本文件说的方式去检查。然后我们指明auxprop_plugin为sasldb,也就是使用一个文件存放用户名密� �,也就是“C:\svn_repository\sasldb”,其它的认证信息存放plugin还有sql和ldapdb。而mech_list指明了认证信息� 递机制,现在指明的是ANONYMOUS和CRAM-MD5。 这里还需要做的是创建那个“C:\svn_repository\sasldb”文件:
saslpasswd2 -c -f C:\svn_repository\sasldb -u myrealm username
然后输入密� �,这� �就在sasldb建立了一个用户,注意“myrealm ”,后面我们还会用到,要想查看建立的用户,可以用:
sasldblistusers2.exe -f C:\svn_repository\sasldb
好的,到此为止SASL部分已经好了,需要注意的是,前面svn.conf的修改要生效必须重启svnserve,这与以前我们修改svnserve.conf立即生效不一� �了。我们再去对svnserve作出相应的修改。
svnserve配置
打开一个svnserve管理的库,打开svnserve.conf,把下面这行的注释去掉
use-sasl = true
然后修改realm为前面的myrealm:
realm = myrealm
总结
好的,现在可能就好了,checkout一个工作拷贝,然后提交看看,是不是用了sasldb中的用户名密� �。
比较愁人的是,SASL的文档实在太少了,而各种各� �的说明也非常不清楚,我也是在不断的整理中逐渐澄清了一些问题。其实SASL更多的是提供了很多认证信息� 递的协议,而对于密� �保存的方式,他目前只是支持了文件、SQL和LDAP等方式,对于很多人希望的域认证来说,似乎要送ldap访问Active Directory方式入手(后面实际尝试一下),而前面所说的NTLM,只是说认证协议是NTLM的,并不能支持使用现有的域用户认证。
参考资料
- Subversion关于SASL的说明:http://svn.collab.net/repos/svn/trunk/notes/sasl.txt
- Cyrus SASL下载(里面有一些文档,但是要好好看才行):ftp://ftp.andrew.cmu.edu/pub/cyrus-mail
TAG: SASL svnserve 认证