Windows平台下使用Active Directory对Subversion进行权限控制(非完美解决方案)

Windows平台下使用Active Directory对Subversion进行权限控制(非完美解决方案)

Windows平台下使用Active DirectorySubversion进行权限控制(非完美解决方案)

 

目前网上找到的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提供的LDAP3

    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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wireshark抓包工具的使用及分析

前段时间看到群里在讨论Wireshark抓包工具&#xff0c;想写一篇使用笔记但一直没来得及写&#xff0c;本篇就通过实例来分享wireshark抓包工具的使用。Wireshark简介 Wireshark 是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包&#xff0c;并尽可能显示出最为详…

EventLoop笔记

node环境 Event Loop各阶段&#xff1a; - timers 阶段&#xff1a;这个阶段执行 setTimeout 和 setInterval 的回调函数。- I/O callbacks 阶段&#xff1a;不在 timers 阶段、close callbacks 阶段和 check 阶段这三个阶段执行的回调&#xff0c;都由此阶段负责&#xff0c…

如何实现android和服务器长连接呢?推送消息的原理

转载地址&#xff1a;http://blog.csdn.net/q376420785/article/details/8653958 前言&#xff1a;现在的大多数移动端应用都有实时得到消息的能力&#xff0c;简单来说&#xff0c;有发送消息的主动权和接受消息的被动权。例如&#xff1a;微信&#xff0c;QQ&#xff0c;天气…

linux入门系统那个好,初学Linux哪个发行版本好?这些更合适!

Linux是非常受欢迎的技术&#xff0c;现在很多人都开始转行学习Linux&#xff0c;不过大家都知道Linux发行版本众多&#xff0c;在学习的时候我该选择哪个发行版本呢?为大家介绍一下。其实在挑选Linux发行版本之前&#xff0c;我们首先要根据自己的需求决定。如果抱着试试的心…

git 使用及常用命令介绍

一、git 常用命令 git clone 地址 克隆项目 git status 查看当前状态 git add 文件或文件夹 &#xff08;加入本地暂存目录&#xff09; git commit -m "注释" 提交到本地版本库&#xff08;暂存区&#xff09; git commit -a -m "注释" 提交全部改动文件 …

asp.net中的记忆盲区

<1> 连接数据库 用read方法取出数据 在web.config取出连接字符串 string sqlconn ConfigurationManager.ConnectionStrings["db_showHouseConnectionString"].ToString(); SqlConnection connnew SqlConnection (sqlconn ); SqlComman…

调试网络收发不通问题

今天在做之前一个项目重构的事情&#xff0c;需要把之前的代码重新做功能&#xff0c;我们有两个设备&#xff0c;他们通过网线连接&#xff0c;用UDP来传输数据。很多人都怀疑UDP丢包什么&#xff0c;不及时什么之类的&#xff0c;如果想把事情做得足够快&#xff0c;最好还是…

VB6.0和VB.Net对照表

想在网上找一下VB.Net中&#xff0c;哪些是VB6.0遗留下来的东西&#xff0c;哪些是VB.Net增加的东西。结果中文的没有找到&#xff0c;找到了一个日文网页。简单的翻译了一下&#xff0c;放在这里&#xff0c;供需要的人参考。 VB6.0和VB.Net的对照表VB6.0VB.NETAddItem Object…

hibernate的初次使用

转载地址&#xff1a;http://blog.csdn.net/aboy123/article/details/10222675 一、Hibernate概述 &#xff08;一&#xff09;什么是Hibernate&#xff1f; hibernate核心内容是ORM&#xff08;关系对象模型&#xff09;。可以将对象自动的生成数据库中的信息&#xff0c;使…

linux 关联数组,linux 普通数组和关联数组

数组&#xff1a;就是借助索引将多个数据存储为一个集合。普通数组&#xff1a;数组的索引只能使用整数关联数组&#xff1a;数组的索引可以使用整数和字符串(要bash4.0以上的版本才支持关联数组)数组通常与循环或者其他判断式交互使用才有比较高的意义普通数组的定义array1(a …

layui之在table的编辑的按钮的思考

点编辑的时候&#xff0c;如果没有在html界面写form&#xff0c;而是在同级目录下写的 修改html的话呢&#xff0c; 就可以在点 编辑 按钮的时候&#xff0c;调用打开tab的方法&#xff0c;把form的html打开&#xff0c;而不用去后台转发转载于:https://www.cnblogs.com/fuckin…

删除rz上传失败乱码的文件

通过rz上传文件失败时&#xff0c;会产生大小为0的乱码的文件&#xff0c;如下 ls -l -rw-r–r– 1 root root 47031 12-15 13:48 ?ղ??.htm 这种类型的文件可用以下命令 find . -maxdepth 1 -size 0 | xargs rm -rf 说明&#xff1a;这种文件大小为0&#xff0c;并且在上…

我用过 | Keil的发展历史

Keil&#xff0c;相信搞嵌入式软硬件开发的读者都不陌生&#xff0c;在全球单片机&#xff08;MCU&#xff09;集成开发环境&#xff08;IDE&#xff09;中&#xff0c;可以说 Keil 占据了半壁江山。Keil 既是一家公司的名称&#xff0c;也是一款 IDE 软件。下面讲述一下 Keil …

C#实现简单WEB服务器

一、HTTP协议的作用原理WWW是以Internet作为传输媒介的一个应用系统&#xff0c;WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型&#xff0c;由Web 浏览器(客户机)和Web服务器(服务器)构成&#xff0c;两者之间采用超文本传送协议&#xff08;HTTP&…

奥鹏C语言专科在线作业答案,电子科大12春《C语言(专科)》在线作业三

《C语言(专科)》在线作业三试卷总分&#xff1a;100 测试时间&#xff1a;-- 试卷得分&#xff1a;100单选题、单选题(共 20 道试题&#xff0c;共 100 分。) 得分&#xff1a;1001. 若有定义&#xff1a;intw[3][5];&#xff0c;则以下不能正确表示该数组元素…

理解Android Binder机制原理

原文地址&#xff1a; http://blog.csdn.net/universus/article/details/6211589 Binder是Android系统进程间通信&#xff08;IPC&#xff09;方式之一。Linux已经拥有的进程间通信IPC手段包括(Internet Process Connection)&#xff1a; 管道&#xff08;Pipe&#xff09;、信…

嵌入式算法-傅里叶变换算法

摘要&#xff1a;傅里叶变换的核心在于&#xff0c;“任何连续周期信号可以由一组适当的正弦曲线组合而成”&#xff0c;在这个基础上对信号的中特定频率的正弦波进行分解或者重组&#xff0c;基于频率方面分析波形。1、傅里叶变换的意义近似周期性的方波&#xff08;橙色&…

磁盘,硬盘,软盘,光盘的区别

计算机存储器分为两大类&#xff1a;内存存储器和外部存储器&#xff08;简称内存或内存条和外存&#xff09;。内存容量小&#xff0c;存取速度快&#xff0c;只能临时保存信息&#xff08;经cup处理后的数据&#xff09;&#xff0c;断电后信息就会消失。外存容量大&#xff…

Server 2008 R2 AD RMS完整部署:AD部署篇

在上一篇里我们完成了基本环境的准备&#xff0c;这一篇主要是讲AD的部署&#xff0c;完成之后我们需要把RMS服务器和两个客户端都加入到域中。好了废话就不说了&#xff0c;首先在我们创建的DC虚机上登录&#xff0c;并对计算机名称进行修改。 完成后先不要忙着重启&#xff0…

WIN2003设完C盘权限后终端连不上。

设完权限后不要马上重启&#xff0c;要先测试终端是否可以连接&#xff0c;否则出现以下的错误就麻烦了。事件类型: 错误事件来源: Userenv事件种类: 无事件 ID: 1500日期: 2006-7-5事件: 16:43:57用户: NT AUTHORITY\NETWORK SERVICE计算机: 描述:Windows 不能让您登录&…