Привет, товарищи
Выложу я свою версию настройки LDAP авторизации с помощью Apache.
Она более подробная, чем чем уже описанная.
Что понадобится:
Нужные действия:
Вот собственно и все.
доступ к репозиториям теперь такой: my.domain.com/test и my.domain.com/secure
для MS Active Directory ВАЖНО помнить, что АД после таймаута посылает TCP RST вместо TCP FIN клиенту.
Есть обход www.apachelounge.com/forum/viewtopic.php?t=1995, либо скачать www.anneb.dds.nl/httpd-2.2.6_ldappatch_win32_vc6.zip
а содержимое положить в С:\Apache\Modules1
можно хранить репозитории удаленно.
для их указания в директиве SVNPath должен быть такой вид (для MS Windows) //server/repos/repo (или по старому \\\\server\\repos\\repo)
Используемые статьи:
www.orcaware.com/svn/wiki/Subversion_configured_for_Windows_Active_Directory_HTTPS
www.opennet.ru/base/net/subversion_ldap.txt.html
Буду рад конструктивной критике. :)
Выложу я свою версию настройки LDAP авторизации с помощью Apache.
Она более подробная, чем чем уже описанная.
Что понадобится:
- Apache 2.2 + open SSL. можно скачать с apache.org.
- SVN совместимый с Apache 2.2. Скачивается здесь — svn.tigris.org.
- Openssl-0.9.7e-Win32.zip. можно скачать отсюда — support.etouch.net/cm/wiki/support.Downloads.wiki/1021721main_Openssl-0.9.7e-Win32.zip
- Стандартный конфиг openssl.cnf — support.etouch.net/cm/wiki/support.Downloads.wiki/1021722main_openssl.cnf
Нужные действия:
- Устанавливаем Apache в C:\Apache.
- Установливаем SVN в C:\SVN.
- Установить openssl в C:\openssl.
- перемещаем openssl.cnf в c:\openssl
- Создаем(или копируем) репозиторий.
svnadmin create c:/repositories/test
svnadmin create c:/repositories/secure
- создаем ssl сертификаты:
openssl req -config openssl.cnf -new -out svn.example.com.csr
openssl rsa -in privkey.pem -out svn.example.com.key
openssl x509 -in svn.example.com.csr -out svn.example.com.cert -req -signkey svn.example.com.key -days 1000
где svn.example.com — имя вашего домена
- копируем все .dll и .so из C:\SVN\bin в c:\Apache\modules
- копируем .cert и .key файлы из C:\openssl в C:\Apache\conf
- редактируем C:\Apache\conf\httpd.conf
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
Listen 443
Include conf/extra/httpd-vhosts.conf
- редактируем C:\Apache\conf\extra\httpd-vhosts.conf
<VirtualHost _default_:443> SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL #указываем имена на файлы сертификатов SSLCertificateFile conf/svn.example.com.cert SSLCertificateKeyFile conf/svn.example.com.key SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 #делаем редирект с корневого пути RedirectMatch ^(/)$ http://google.com #указываем общие настройки для всех репозиториев <LocationMatch ^/.*> Order allow,deny Allow from all AuthType Basic AuthBasicProvider ldap AuthzLDAPAuthoritative off AuthName "SVN main repo" #Указываем путь к LDAP серверу. Важно помнить, что без SSL используется ldap:// и порт 3268 #Так же возможен вариант с портами 389 и 390 для SSL AuthLDAPURL "ldaps://myDC.domain.com:3269/DC=domain,DC=com?sAMAccountName?sub?(objectClass=*)" #указываем DN путь к пользователю, который будет биндится к LDAP серверу. AuthLDAPBindDN "CN=Apache_bind,OU=users,OU=my,DC=domain,DC=com" #Пароль в ОТКРЫТОМ виде AuthLDAPBindPassword qweqwe AuthLDAPGroupAttributeIsDN on AuthLDAPGroupAttribute member SSLRequireSSL #запрет на анонимов SVNPathAuthz on AuthzSVNAnonymous off </LocationMatch> #указываем путь к нашему созданному тестовому репозиторию <Location /test> DAV svn AuthName "SVN Test" SVNPath С:/repositories/test SVNListparentPath off #пускаем всех доменных пользователей require valid-user </Location> #и создаем путь к другому репозиторию с разграничением прав <Location /secure> DAV svn AuthName "SVN Secure" SVNPath c:/repositories/Secure #Даем права на запись группе SVN_Secure_write Require ldap-group CN=SVN_Secure_write,OU=my,DC=domain,DC=com #и ограничиваем пользователей на чтение группе SVN_Secure_read <Limit GET PROPFIND OPTIONS REPORT> Require ldap-group CN=SVN_Secure_read,OU=my,DC=domain,DC=com </Limit> </Location> </VirtualHost>
Вот собственно и все.
доступ к репозиториям теперь такой: my.domain.com/test и my.domain.com/secure
для MS Active Directory ВАЖНО помнить, что АД после таймаута посылает TCP RST вместо TCP FIN клиенту.
Есть обход www.apachelounge.com/forum/viewtopic.php?t=1995, либо скачать www.anneb.dds.nl/httpd-2.2.6_ldappatch_win32_vc6.zip
а содержимое положить в С:\Apache\Modules1
можно хранить репозитории удаленно.
для их указания в директиве SVNPath должен быть такой вид (для MS Windows) //server/repos/repo (или по старому \\\\server\\repos\\repo)
Используемые статьи:
www.orcaware.com/svn/wiki/Subversion_configured_for_Windows_Active_Directory_HTTPS
www.opennet.ru/base/net/subversion_ldap.txt.html
Буду рад конструктивной критике. :)