Как стать автором
Обновить

LDAP авторизация в SVN с помощью Apache

Время на прочтение3 мин
Количество просмотров3K
Привет, товарищи

Выложу я свою версию настройки LDAP авторизации с помощью Apache.
Она более подробная, чем чем уже описанная.

Что понадобится:

Нужные действия:
  1. Устанавливаем Apache в C:\Apache.
  2. Установливаем SVN в C:\SVN.
  3. Установить openssl в C:\openssl.
  4. перемещаем openssl.cnf в c:\openssl
  5. Создаем(или копируем) репозиторий.
    svnadmin create c:/repositories/test
    svnadmin create c:/repositories/secure

  6. создаем 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 — имя вашего домена
  7. копируем все .dll и .so из C:\SVN\bin в c:\Apache\modules
  8. копируем .cert и .key файлы из C:\openssl в C:\Apache\conf
  9. редактируем 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

  10. редактируем 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

Буду рад конструктивной критике. :)
Теги:
Хабы:
+4
Комментарии0

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн