Как я могу ограничить доступ Apache / GIT для определенных пользователей (аутентификация на основе ldap / file)? - PullRequest
2 голосов
/ 29 февраля 2012

Я использую сервер репозитория SVN с аутентификацией ldap / file. Это позволяет мне фильтровать, какие пользователи будут иметь доступ к каждому из репозиториев на сервере.

Теперь я планирую перейти на GIT, и у меня уже есть GIT, работающий через Apache / LDAP, но мне не удается отфильтровать пользователей, как у меня в SVN.

Есть ли способ достичь этого?

Спасибо

1 Ответ

1 голос
/ 29 февраля 2012

Вы можете реплицировать тот же механизм аутентификации (аутентификация LDAP, объявленный в вашем httpd.conf), если вы вызываете механизм smart http позади, как описано в " Настройка GIT с использованием Apache Smart HTTP / S и LDAP".

Обратите внимание, что это отличается от части авторизации, как объяснено в Gitolite: авторизация против аутентификации и объяснено в " Использование LDAP в качестве метода аутентификации для управления репозиториями git ".

Я предпочитаю использовать псевдонимы LDAP для многократной ссылки на этот сервер аутентификации:

<AuthnProviderAlias ldap myldap>
  AuthLDAPBindDN cn=Manager,dc=example,dc=com
  AuthLDAPBindPassword secret
  AuthLDAPURL ldap://localhost:9011/dc=example,dc=com?uid?sub?(objectClass=*)
</AuthnProviderAlias>

Вот пример конфигурации (с SSL на месте) с использованием LDAP:

<VirtualHost itsvcprdgit.world.company:8453>
    ServerName itsvcprdgit.world.company
    ServerAlias itsvcprdgit

    SSLCertificateFile "/home/auser/compileEverything/apache/itsvcprdgit.world.company.crt"
    SSLCertificateKeyFile "/home/auser/compileEverything/apache/itsvcprdgit.world.company.key"
    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

    SetEnv GIT_PROJECT_ROOT /home/auser/compileEverything/repositories
    SetEnv GIT_HTTP_EXPORT_ALL

    ScriptAlias /mygit/ /path/to/git-http-backend/
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
      SSLOptions +StdEnvVars
    </FilesMatch>
    <Location /mygit>
        SSLOptions +StdEnvVars
        Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
        #AllowOverride All
        order allow,deny
        Allow from all

        AuthName "LDAP authentication for ITSVC Smart HTTP Git repositories"
        AuthType Basic
        AuthBasicProvider myldap
        AuthzLDAPAuthoritative On

        Require valid-user
        AddHandler cgi-script cgi
    </Location>
    BrowserMatch ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
    CustomLog "/home/auser/compileEverything/apache/githttp_ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    ErrorLog "/home/auser/compileEverything/apache/githttp_error_log"
    TransferLog "/home
</VirtualHost>
...