注册
 找回密码
 注册
江西广告网
查看: 171|回复: 0
打印 上一主题 下一主题

利用ldap进行windows

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2008-12-14 11:24:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
<P>  最近从subversion网站看到apache在处理webdav的bug得到解决(apache 2.2.4),并且apache2.2.X的ldap支持比2.0.X更加稳定,所以决定尝试在windows XP(or 2003)下安装subversion apache使之支持ldap认证.环境: windows XP(or 2003), Windows AD,</P>

<P>  问题是subversion官方网站上下载到的一个基于Apache 2.2.X的2进制包(svn-win32-1.4.4.zip), 在配合apache官方网站下载的2.2.4版本上出错, 加载ldap模块后访问版本库的时候会发生runtime error.尝试了几种组合后,找到能够正确编译安装subversion1.4.4 apache 2.2.4并使之支持ldap 和SSL的方法.</P>

<P>1.下载apache 2.2.4的source code.(httpd-2.2.4-win32-src.zip)<BR>2.下载apache 2.2.4的windows安装包.(with ssl或者no ssl的都可以).如果下载到with ssl的安装包, 是可以直接使用的,就是说,不用再自己编译apache了. 不过,其实后面编译subversion的时候,还是会编译apapche, 只是编以后的apapche用不着copy到安装目录去替换安装的文件.<BR>3.下载 subversion1.4.4的windows 安装包(svn-1.4.4-setup.exe)<BR>4.下载 subversion1.4.4的source code(subversion-1.4.4.zip).<BR>5.编译环境需要VC6.0以及安装windows 2003 SDK.否则就没有的windows下ldap的SDK.<BR>6,编译过程可以参考subversion source code 目录下的install文件.按照文件一步一步做就可以了.里面说得很清楚, 我这里再说就是废话了.<BR>7,编译好以后, 先安装前面下载的apache 和 subversion的安装包,安装过程在另一篇文章中已经有说明.安装完以后先不要去配置httpd.conf<BR>8,编译好subversion以后, 找出同安装目录中bin目录 (如:c:\subversion\bin)下同名的文件覆盖到bin目录下.有一些apr的dll文件名字可能略有差异, 后面会多出一个-1(如, libapr.dll, 可能对应的是libapr-1.dll), 也别忘了要覆盖两个so文件.<BR>9,这个时候就可以先设定不带ldap的版本库访问, 如果能够正常工作, 那么系统就算成功了.<BR>10,设置ldap.</P>

<P>设置ldap的时候, 最好能先用一些ldap查看工具浏览一下你的windows domain ,以确定baseDN等等这些基本信息.一个比较好的工具就是LDAPbrowser.用它可以浏览Domain里面的LDAP对象.</P>

<P>11 httpd.conf的设置</P>

<P>LoadModule ssl_module modules/mod_ssl.so<BR>LoadModule ldap_module modules/mod_ldap.so<BR>LoadModule authnz_ldap_module modules/mod_authnz_ldap.so<BR>LoadModule dav_svn_module "C:/Subversion/bin/mod_dav_svn.so"<BR>LoadModule authz_svn_module "C:/Subversion/bin/mod_authz_svn.so"<BR>…………<BR>Include C:/Apache/Apache22/conf/extra/httpd-ssl.conf<BR>…………<BR>LDAPSharedCacheSize 200000<BR>LDAPCacheEntries 1024<BR>LDAPCacheTTL 600<BR>LDAPOpCacheEntries 1024<BR>LDAPOpCacheTTL 600</P>

<P>&lt;Location /repos&gt;<BR>   DAV svn<BR>   SVNParentPath c:/repos<BR>   AuthBasicProvider ldap file<BR>   AuthType Basic<BR>   AuthzLDAPAuthoritative off</P>

<P>   AuthName "Subversion repository"</P>

<P>   AuthLDAPURL "ldap://yourIP:389/dc=nnn,dc=com?sAMAccountName?sub?(objectClass=*)" NONE<BR>   AuthLDAPBindDN "someone@nnn.com"<BR>   AuthLDAPBindPassword 111111<BR>   AuthUserFile c:/repos/passwordfile<BR>   AuthzSVNAccessFile c:/repos/authz<BR>#   Satisfy Any<BR>   Require valid-user<BR>   SSLRequireSSL<BR>&lt;/Location&gt;</P>

<P><BR>下面逐个说明内容<BR>11.1<BR>LoadModule ssl_module modules/mod_ssl.so<BR>LoadModule ldap_module modules/mod_ldap.so<BR>LoadModule authnz_ldap_module modules/mod_authnz_ldap.so<BR>LoadModule dav_svn_module "C:/Subversion/bin/mod_dav_svn.so"<BR>LoadModule authz_svn_module "C:/Subversion/bin/mod_authz_svn.so"</P>

<P>加载模块, mod_ssl当然是用来支持https通信方式的. Mod_ldap以及mod_authnz_ldap是用来提供LDAP认证必须的模块.</P>

<P>最后两个模块是Subversion的模块.</P>

<P>11.2<BR>Include C:/Apache/Apache22/conf/extra/httpd-ssl.conf<BR>在httpd.conf里面找到这一行把前面的”#”注释号取消,后面会讲httpd-ssl.conf的配置.</P>

<P>11.3<BR>LDAPSharedCacheSize 200000<BR>LDAPCacheEntries 1024<BR>LDAPCacheTTL 600<BR>LDAPOpCacheEntries 1024<BR>LDAPOpCacheTTL 600<BR>这些设置来源于apache的文檔,照抄的</P>

<P>11.4<BR>&lt;Location /repos&gt;<BR>   DAV svn<BR>   SVNParentPath c:/repos                          #版本库所在位置<BR>   AuthBasicProvider ldap file                     #支持ldap和密码文件混合认证,支持密码文件的目的是可以建立非ldap, 仅访问版本库的账号<BR>   AuthType Basic<BR>   AuthzLDAPAuthoritative off                 #在ldap找不到账号的情况下可以使用其它的认证方式(如,密码文件)</P>

<P>   AuthName "Subversion repository"</P>

<P>   AuthLDAPURL "ldap://yourIP:389/dc=nnn,dc=com?sAMAccountName?sub?(objectClass=*)" NONE      #这是你的ldap的设置,使用windows ad作为ldap库, yourIP是DC的地址<BR>   AuthLDAPBindDN "someone@nnn.com"                     #有读权限的AD内用户账号<BR>   AuthLDAPBindPassword 111111                                  #该账号的密码<BR>   AuthUserFile c:/repos/passwordfile                              #密码文件<BR>   AuthzSVNAccessFile c:/repos/authz                         SVN的权限控制文件.<BR>#   Satisfy Any<BR>   Require valid-user<BR>   SSLRequireSSL<BR>&lt;/Location&gt;</P>

<P>12 httpd-SSL.conf<BR>Httpd 2.2.X以后的conf文件是模块化的,很多东西提取出来了,根据前面这句   Include C:/Apache/Apache22/conf/extra/httpd-ssl.conf ,我们需要编辑相应的文件主要编辑2个地方<BR>一个是 SSLCertificateFile 标记, 后面跟SERVER.crt的路径,另一个是 SSLCertificateKeyFile 标记, 后面跟 server.key 的路径.</P>

<P>设置好以上数据, 可以重新启动httpd了.</P>

<P>13.<BR>c:/repos/authz 文件内的账号名字要和 sAMAccountName 名字相同。</P>

<P>TODO:想办法使SVN的权限多样化,不再是只有rw.</P> <
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表