目前网上找到的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:///software/ldap/ ):
我使用的是http://www.的 mod_auth_ldap,对其他的没有试过。
一、 安装(假定已经安装了Apache+Subversion ) 1. 安装文件的获取: mm_mod_auth_ldap for MS Windows binary:从 http://www./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./download/index.jsp?cat=Application Development&tab=3,需要注册才能下载) 2. 安装和设置(来自http://www./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:///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写的不正确,但是不知道该怎么写,目前就凑合着用了。
三、 问题
四、参考资料 1. 《开发服务器环境配置安装说明》(http://bbs./viewthread.php?tid=618651 ) 2. 《LDAP authentication module for apache》 http://www./muquit/software/mod_auth_ldap/mod_auth_ldap.html 3. 《Subversion Users List Archives》http://svn./users/ 标签:C# | 浏览(220) | 评论(1) | 06-12 09:20
原创作品,转载请注明出处。(摘自:碎片)※简述※Subversion是近期在开源社区中非常流行的一款版本控制软件,它是CVS的替代产物。 它的主要特征有:
其他还有些零星的小功能,具体可以参阅: http://subversion./roadmap.html 这里解释一下 数据仓库 的概念: ※下载※Subversion 1.2.3: TortoiseSVN: Apache 2.0.55: ※安装使用※下面说一下安装,分两种平台(windows,linux)及两种模式(与Apache绑定 vs. Stand-alone) 另外,SVN是支持SSL的,但是这个配置牵涉到其他太多东西,本文就不过多涉及了。真的有需要可以参考SVN的手册(英文)。 方便起见,用几个变量代表具体的值,请自行加以调整: %SystemRoot% — windows的系统所在目录,一般类似这样:C:\WINNT 另外,安装过程默认使用文件系统做后台数据库,文中不再加以说明。如需使用BerkeleyDB,请自行参考SVN文档。 Windows上的服务器端安装 1.双击下载得来的”svn-1.2.3-setup.exe”并安装到”%SVN_HOME%” 2.安装完毕后,”%SVN_HOME%\bin”应该已经自动加入到系统路径(%PATH%)中。如果没有,请手工添加。 3.用命令行来测试安装结果是否正确:
如果返回这样的错误信息:”svnadmin.exe - Unable To Locate DLL”,那就需要尝试一下步骤的中的一种或几种: 4.使用以下命令创建一个数据仓库,用来存放项目的源代码和其他文件:
5.其中%SVN_REPO_PARENT%是包含所有数据仓库的目录,%PROJECT_NAME%是所创建的数据仓库对应的项目名。
6.从命令行启动SVN Server:
注意里面的参数 r 限定了浏览全部数据仓库的根目录 当然如果觉得每次这样启动太麻烦的话,也有SVN Serveice的包装程序(http://dark./~mbn/svnservice/)。通过它能够以windows service的方式运行SVN Server(其本质还是Stand-alone),运行起来相对比较方便。 7.创建用户数据库(其实就是一个txt文本,就叫它”users.conf”吧,你也可以改名),保存到
注意这里密码是明文存放的,所以也是这种方式的不足之处。 8.在”%SVN_REPO_PARENT%\%PROJECT_NAME%\conf”目录下找到这个”svnserve.conf”文件,用任何文本编辑器打开,为刚才创建的那些用户添加读写权限:
里面的”users.conf”就是刚才在第7步创建的用户文件。 9.最后,重启SVN Server(什么?你不知道怎么重启?关掉窗口再重新用命令行启动啦;包装成Service的话么就更加简单了) 现在已经可以使用客户端来连接SVN Server,进行import等操作了。
具体步骤,请参阅第20步。
10.首先要了解的是SVN设计的时候只考虑了兼容Apache2.x,所以在Apache1.x下是不能正常工作的。 11.安装Apache2 12.检查Apache2的安装是否成功 13.打开Apache的配置文件: “%APACHE_HOME%\conf\httpd.conf”
完成之后看起来应该是这样:
另外在这行下面再添加两行(请注意把路径中的”\”替换成”/”):
特别需要注意的是:由于模块依赖关系,这三行的出现顺序千万不能颠倒。 14.再来配置一下”httpd.conf”的其他部分,告诉Apache2 SVN的数据仓库所在。
添加下述内容:
这里涉及到两个文件: “%SVN_REPO_PARENT%/AccessFile” 及 “%SVN_REPO_PARENT%/passwd”. 15.保存”httpd.conf”并退出,这里Apache2的配置告一段落。 16.”%SVN_REPO_PARENT%/AccessFile”文件的内容
其中:
你可以根据需要来设定不同的权限,更详细的说明还需要参考SVN文档中的权限设置章节。 17.”%SVN_REPO_PARENT%/passwd”文件的内容
此时用文本编辑器打开”%SVN_REPO_PARENT%/passwd”,可以看到里面内容是类似这样的:
18.把SVN自带的XSLT文件拷贝到网站根目录,
19. 重启Apache2服务:
20.打开浏览器,访问:http://%SERVER_NAME_OR_IP%/svn/
21.和CVS一样,SVN在最初的时候需要将已有项目导入到数据库中。
或者(Apache2 module):
其中: 22.然后,需要从Server端再次checkout到本地:
注意: 23.对于向SVN Serer增加,移动,删除,或者修改后提交某些文件,参考使用以下命令:
对于上面的客户端操作,如果安装了TortoiseSVN,一切就变得简单多了。 |
|