最近因為涉及到源代碼版本控制的問題,是以決定采用SVN來進行版本控制,而涉及到使用者權限的問題,決定采用AD驗證的方式來控制使用者通路,于是花了不少時間研究這玩意,總算小有結果,先記錄下來,鞏固下,也以防以後忘記.
整個過程大緻有四個步驟:
1. 安裝Apache (http://httpd.apache.org/download.cgi)
2. 安裝Subversion (http://subversion.tigris.org/)
3. 安裝TortoiseSVN(http://tortoisesvn.tigris.org/)
4. 配置
在較長的描述之前,我先說下我目前的幾個軟體版本:
Apache_2.2.11
Subversion-1.6.2
TortoiseSVN-1.6.2.16344
好了,下面開始講講具體的步驟了.
1. 安裝Apache
這個步驟還是比較簡單,基本上也就是一路Next下來,這裡需要提到的是:一要注意版本和SVN的版本是否一緻, 二是要Apache安裝的時候,目錄可以更改下,比如D:/Apache,當然這點并不影響後面的配置,隻是友善而已.
2. 安裝Subversion
和上面一樣,選擇個簡單的目錄比如(D:/Subversion),注意版本就OK了,安裝過程并需要操什麼心.
3. 安裝TortoiseSVN
這是個第三方的windows下面的圖形化工具,用它可以比較簡單的進行操作,當然如果足夠牛,或喜歡用subversion的指令話,這個不是必要的.
4. 配置檔案
這個是這篇文章的重中之重了,下面就描述下我的配置,因為我也隻是配成功了就OK,沒有繼續往下深究的意思,是以這裡隻描述了我配置成功後的樣子,也許還有别的方式,或是更加詳細的配置方案,這裡就濾過了.
1): 配置SVN. 通過修改Apache的配置檔案,先得讓SVN可以通過http的方式通路才行,是以這裡我們先找到Apache的配置檔案httpd.conf (D:/Apache/conf), 進行如下的配置:
#取消這兩行的注釋
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
#加上這兩行,這裡使用絕對路徑,友善更新,也不用拷貝那麼多的dll檔案
#D:/Subversion是Subversion的安裝目錄,根據實際情況修改
LoadModule dav_svn_module "D:/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module "D:/Subversion/bin/mod_authz_svn.so"
2): 啟用ldap的模組來進行驗證
#在httpd.conf檔案中找到這兩行,取消注釋
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule ldap_module modules/mod_ldap.so
#找到這一行,取消注釋
#這一行在後面配置的時候,如果設定Require valid-user時,是必須的
LoadModule authz_user_module modules/mod_authz_user.so
3): 配置相關權限
架設我們已經在D:/SVN下面建立了一個版本庫,你可以用TortoiseSVN或是svn指令建立一個,比如Repository.
下面就繼續修改httpd.conf檔案來完成內建AD驗證的功能.
#在httpd.conf的最末尾加上這一段
<Location /svn>
#啟用SVN,設定驗證的路徑
DAV svn
SVNParentPath D:/SVN
#啟用LDAP驗證
AuthBasicProvider ldap
AuthType Basic
AuthzLDAPAuthoritative on
AuthName "My Subversion Server"
# The LDAP query URL
# 格式: scheme://host:port/basedn?attribute?scope?filter
# 具體的資訊,上網查查吧,就不啰嗦了
AuthLDAPURL "ldap://myhost.example.com:389/DC=example,DC=com?sAMAccountName?sub?(objectClass=*)" NONE
#使用下面的兩種格式都OK的
#注意這裡的CN使用的是AD中對應的Display Name
#可以通過後面參考檔案中的browser來檢視使用者對應的cn
#AuthLDAPBindDN "CN=Cresting Ding,CN=Users,DC=EXAMPLE,DC=COM"
AuthLDAPBindDN "[email protected]"
AuthLDAPBindPassword "test"
# 這裡如果用valid-user,就必須啟用上面提到的那個mod_authz_user.so
Require valid-user
#Require ldap-user "cding"
</Location>
OK了,重新開機下Apache,然後找台機子試試吧.
Note: 提示輸入使用者名和密碼的時候,使用者名隻要資料cding就OK了,不需要輸入example/cding
參考檔案:
http://www.jejik.com/articles/2007/06/apache_and_subversion_authentication_with_microsoft_active_directory/
http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html
http://www.filewatcher.com/m/Browser282b2.zip.658370.0.0.html