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