天天看點

利用Apache + Subversion實作AD驗證

       最近因為涉及到源代碼版本控制的問題,是以決定采用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