利用ldap進(jìn)行windowsad賬號認(rèn)證

字號:

最近從subversion網(wǎng)站看到apache在處理webdav的bug得到解決(apache 2.2.4),并且apache2.2.X的ldap支持比2.0.X更加穩(wěn)定,所以決定嘗試在windows XP(or 2003)下安裝subversion+apache使之支持ldap認(rèn)證.環(huán)境: windows XP(or 2003), Windows AD,
    問題是subversion官方網(wǎng)站上下載到的一個(gè)基于Apache 2.2.X的2進(jìn)制包(svn-win32-1.4.4.zip), 在配合apache官方網(wǎng)站下載的2.2.4版本上出錯(cuò), 加載ldap模塊后訪問版本庫的時(shí)候會(huì)發(fā)生runtime error.嘗試了幾種組合后,找到能夠正確編譯安裝subversion1.4.4+apache 2.2.4并使之支持ldap 和SSL的方法.
    1.下載apache 2.2.4的source code.(httpd-2.2.4-win32-src.zip)
    2.下載apache 2.2.4的windows安裝包.(with ssl或者no ssl的都可以).如果下載到with ssl的安裝包, 是可以直接使用的,就是說,不用再自己編譯apache了. 不過,其實(shí)后面編譯subversion的時(shí)候,還是會(huì)編譯apapche, 只是編以后的apapche用不著copy到安裝目錄去替換安裝的文件.
    3.下載 subversion1.4.4的windows 安裝包(svn-1.4.4-setup.exe)
    4.下載 subversion1.4.4的source code(subversion-1.4.4.zip).
    5.編譯環(huán)境需要VC6.0以及安裝windows 2003 SDK.否則就沒有的windows下ldap的SDK.
    6.編譯過程可以參考subversion source code 目錄下的install文件.按照文件一步一步做就可以了.里面說得很清楚, 我這里再說就是廢話了.
    7.編譯好以后, 先安裝前面下載的apache 和 subversion的安裝包,安裝過程在另一篇文章中已經(jīng)有說明.安裝完以后先不要去配置httpd.conf
    8.編譯好subversion以后, 找出同安裝目錄中bin目錄 (如:c:\subversion\bin)下同名的文件覆蓋到bin目錄下.有一些apr的dll文件名字可能略有差異, 后面會(huì)多出一個(gè)-1(如, libapr.dll, 可能對應(yīng)的是libapr-1.dll), 也別忘了要覆蓋兩個(gè)so文件.
    9.這個(gè)時(shí)候就可以先設(shè)定不帶ldap的版本庫訪問, 如果能夠正常工作, 那么系統(tǒng)就算成功了.
    10.設(shè)置ldap.
    設(shè)置ldap的時(shí)候, 能先用一些ldap查看工具瀏覽一下你的windows domain ,以確定baseDN等等這些基本信息.一個(gè)比較好的工具就是LDAPbrowser.用它可以瀏覽Domain里面的LDAP對象.
    11 httpd.conf的設(shè)置
    LoadModule ssl_module modules/mod_ssl.so
    LoadModule ldap_module modules/mod_ldap.so
    LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
    LoadModule dav_svn_module "C:/Subversion/bin/mod_dav_svn.so"
    LoadModule authz_svn_module "C:/Subversion/bin/mod_authz_svn.so"
    …………
    Include C:/Apache/Apache22/conf/extra/httpd-ssl.conf
    …………
    LDAPSharedCacheSize 200000
    LDAPCacheEntries 1024
    LDAPCacheTTL 600
    LDAPOpCacheEntries 1024
    LDAPOpCacheTTL 600
    
    DAV svn
    SVNParentPath c:/repos
    AuthBasicProvider ldap file
    AuthType Basic
    AuthzLDAPAuthoritative off
    AuthName "Subversion repository"
    AuthLDAPURL "ldap://yourIP:389/dc=nnn,dc=com?sAMAccountName?sub?(objectClass=*)" NONE
    AuthLDAPBindDN "someone@nnn.com"
    AuthLDAPBindPassword 111111
    AuthUserFile c:/repos/passwordfile
    AuthzSVNAccessFile c:/repos/authz
    # Satisfy Any
    Require valid-user
    SSLRequireSSL