Windows平台下使用Active Directory对Subversion进行权限控制(非完美解决方案)
Windows平臺下使用Active Directory對Subversion進行權限控制(非完美解決方案)
?
目前網上找到的Subversion的配置說明中,關于用戶權限控制都是基于Apache的User文件的或是基于svnserve.conf文件的,這種配置方式最大的問題在于用戶信息保存在獨立的文本文件中,維護不便(對用戶的添加、修改等必須在服務器上執行,用戶自己無法修改密碼等),并且無法和其他系統集成。
?于是琢磨可不可以用公司現有的Active Directory對Subversion的用戶進行權限控制,這樣可以解決上面提到的幾個問題。
?目前已經基本實現了對Subversion使用Active Directory驗證,但是還有一些比較重要的問題沒有解決,所以是“非完美解決方案”,放在這里拋磚引玉,希望能夠有更好的解決方案。
?Apache不能直接調用Active Directory的,只能通過Active Directory提供的LDAP方式進行訪問,因此需要在Apache中打開對LDAP的支持;
?Apache中自帶了對LDAP的支持(默認情況下沒有打開),但是官方自帶的LDAP支持插件在Windows平臺下有問題(我這里是經常造成Apache異常退出,服務終止);因此在Windows平臺下需要安裝第三方的LDAP支持插件才可以。
?在網上找了一下,發現Apache的LDAP支持模塊有以下幾個可供選擇(來源:http://nona.net/software/ldap/):
| 名稱 | 網址 |
| mod_auth_ldap | http://nona.net/software/ldap/ |
| mod_auth_ldap | http://httpd.apache.org/docs-2.0/mod/mod_auth_ldap.html |
| auth_ldap | http://www.rudedog.org/auth_ldap/ |
| mod_auth_ldap | http://www.muquit.com/muquit/software/mod_auth_ldap/mod_auth_ldap.html |
| mod_authz_ldap | http://authzldap.othello.ch/ |
| mod_ldap | http://www.kie.berkeley.edu/people/jmorrow/mod_ldap/ |
| mod_ldap | http://hpwww.ec-lyon.fr/~vincent/apache/mod_ldap.html |
我使用的是http://www.muquit.com的mod_auth_ldap,對其他的沒有試過。
?
一、 安裝(假定已經安裝了Apache+Subversion)
1.??????? 安裝文件的獲取:
mm_mod_auth_ldap for MS Windows binary:從http://www.muquit.com/muquit/software/mod_auth_ldap/mod_auth_ldap.html下載。
由于mm_mod_auth_ldap是基于Sun的iPlanet C SDK 5.08開發的,運行時還需要iPlanet C SDK 5.08的一些DLL,因此還需要自己下載iPlanet C SDK 5.08(http://www.sun.com/download/index.jsp?cat=Application%20Development&tab=3,需要注冊才能下載)
2.??????? 安裝和設置(來自http://www.chinaunix.net/jh/49/618651.html):
1)?????? 將上面所說的兩個壓縮包中的DLL文件復制到Apache的modules目錄中;
2)?????? 在httpd.conf中加入 LDAP 相關模塊的配置,就是增加如下一行:
??? LoadModule auth_ldap_module modules/mod_auth_ldap.dll
?
二、 配置
如下是httpd.conf中Subversion段的配置,注意紅字的部分就是LDAP的配置信息,具體意義參見注釋;其他關于Subversion和Apache的配置資料請參見網上相關文章(例如http://cube316.net/blog/archives/200512/32)。
?<Location /svn>
??? // 常規Subversion配置
??? DAV svn
??? SVNListParentPath on
??? SVNParentPath D:\SVNStore
??? AuthType Basic
??? AuthName "Subversion repositories"
??? # 不能使用svnaccessfile進行配置,原因見后
??? # AuthzSVNAccessFile conf\svnaccessfile
??? Require valid-user
???
??? # 以下為LDAP配置信息
??? # LDAP 協議版本,AD提供的LDAP為3
??? LDAP_Protocol_Version 3
??? # LDAP 服務器
??? LDAP_Server 192.168.1.2
??? # LDAP 服務器端口
??? LDAP_Port 389
??? # LDAP 基礎DN
??? Base_DN "dc=MainDC"
??? # AD 的 LDAP 不允許進行匿名查詢,因此需要提供一
??? # 個 AD 中的用戶名及其密碼用于 Apache 的LDAP查詢
??? Bind_DN "cn=Administrator,cn=Users,dc=MainDC"
??? Bind_Pass "password"
??? # 供 Apache 查詢的 AD Object 的屬性
??? UID_Attr "sAMAccountName"
??? # 允許什么條件的 AD 用戶訪問 Subversion;
??? # 這里設置只有scmuser組的用戶才可以訪問,但是并沒
# 有成功,事實上只要是AD中的用戶現在都可以訪問,
# 不清楚問題出在哪里。
??? require group "cn=scmuser,ou=groups,dc=MainDC"
</Location>
這樣配置的意圖是允許SCMUser中所有用戶可以存取Subversion,其他的用戶則不可以,但是事實上這樣配置以后的實際結果是AD中所有用戶都可以訪問Subversion了,懷疑是require group中的LDAP Filter寫的不正確,但是不知道該怎么寫,目前就湊合著用了。
?
三、 問題
使用LDAP可以和其他系統比較好的集成,并且能夠方便地對用戶進行管理,但是這種方式對于Subversion很有問題,就是使用這種方式后無法使用AuthzSVNAccessFile來對Subversion進行目錄級別的權限控制,據網上資料說是因為SVNAccessFile中的用戶和組都必須在User文件中定義(參見http://svn.haxx.se/users/archive-2006-02/0586.shtml及其相關討論),我想如果對Apache的授權模塊進行自定義修改的話估計是可以的,不過目前我們對此要求不高,所以還暫時能夠使用。
?
四、參考資料
1.??????? 《開發服務器環境配置安裝說明》(http://bbs.chinaunix.net/viewthread.php?tid=618651)
2.??????? 《LDAP authentication module for apache》http://www.muquit.com/muquit/software/mod_auth_ldap/mod_auth_ldap.html
3.??????? 《Subversion Users List Archives》http://svn.haxx.se/users/
?
posted on 2006-05-31 23:57 NetCobra 閱讀(...) 評論(...) 編輯 收藏轉載于:https://www.cnblogs.com/NetCobra/archive/2006/05/31/414378.html
總結
以上是生活随笔為你收集整理的Windows平台下使用Active Directory对Subversion进行权限控制(非完美解决方案)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql trim 索引_mysql强
- 下一篇: ios 百度地图指定区域_ios百度地图