Проверка подлинности пути SVN с использованием доменных групп Windows - PullRequest
0 голосов
/ 14 марта 2012

Как настроить SVN, обслуживаемый Apache в Windows, таким образом, чтобы пути в репозитории могли иметь контроль доступа, настроенный с использованием групп домена Windows?

Ответы [ 2 ]

1 голос
/ 26 марта 2012

После некоторого исследования, я думаю, я разобрался, как это сделать, используя mod_sspi и серию директив конфигурации Apache Location.

<Location /svn>
    DAV svn
    SVNParentPath "D:/SvnRepos"
    SVNListParentPath On

    AuthType SSPI
    AuthName "SVN Server"
    SSPIAuth On
    SSPIAuthoritative On
    SSPIDomain MYDOMAIN
    SSPIOfferBasic On
    Require group MYDOMAIN\PRODUCT1_DEVS MYDOMAIN\PRODUCT2_DEVS
</Location>


<Location /svn/Repo/Product1>
    AuthType SSPI
    AuthName "SVN Product1"
    SSPIAuth On
    SSPIAuthoritative On
    SSPIDomain MYDOMAIN
    SSPIOfferBasic On
    Require group MYDOMAIN\PRODUCT1_DEVS
</Location>


<Location /svn/Repo/Product2>
    AuthType SSPI
    AuthName "SVN Product2"
    SSPIAuth On
    SSPIAuthoritative On
    SSPIDomain MYDOMAIN
    SSPIOfferBasic On
    Require group MYDOMAIN\PRODUCT2_DEVS
</Location>

Недостатками этого подхода является то, что конфигурация мудрая, она немного многословна иэто не работает для WebSVN.Первый из них мне не безразличен, а второй, который я мог бы посмотреть на исправление позже.

Хотя вопрос для всех вас, экспертов Apache и SVN.Является ли эта конфигурация безопасной и надежной?Мне кажется, что он работает нормально, но я не видел, чтобы этот подход упоминался где-либо еще, поэтому я немного нервничаю по поводу его развертывания без какой-либо обратной связи с экспертами, и у нас нет опытных парней из Apache.

=== РЕДАКТИРОВАТЬ ===

В конечном итоге я решил создать отдельный репозиторий для каждого проекта, для которого требовались определенные права доступа, используя конфигурацию, подобную этой.

# Publishes repository 1 at url http://localhost/svn/Repo1 used mostly by team 1.
<Location /svn/Repo1>
    # DAV config.
    DAV svn

    # Config to publish single repository.
    SVNPath "D:/SvnRepos/Repo1"

    # Config to publish all repositories in directory.
    #SVNParentPath "D:/SvnRepos/"
    #SVNListParentPath On

    # Auth config.
    AuthName "SVN"
    AuthType SSPI
    SSPIAuth On
    SSPIOfferBasic On
    SSPIAuthoritative On

    <RequireAny>
        # Allows access to any user.
        #Require valid-sspi-user

        # Allows access to users belonging to specified domain group(s).
        Require sspi-group DOMAIN_NAME\TEAM1

        # Allows access to specified domain users.
        Require sspi-user DOMAIN_NAME\user1
    </RequireAny>

</Location>

# Publishes repository 2 at url http://localhost/svn/Repo2 used by several teams.
<Location /svn/Repo2>
    # DAV config.
    DAV svn

    # Config to publish single repository.
    SVNPath "D:/SvnRepos/Repo2"

    AuthName "SVN"
    AuthType SSPI
    SSPIDomain DOMAIN_NAME
    SSPIAuth On
    SSPIOfferBasic On
    SSPIAuthoritative On

    Require sspi-group DOMAIN_NAME\TEAM1 DOMAIN_NAME\TEAM2 DOMAIN_NAME\TEAM3
</Location>

Хотя я действительно задаюсь вопросом,Исходная конфигурация могла бы сработать, если бы я только что удалил первый элемент location, дающий доступ к каталогу root / svn, я уверен, что я должен был это проверить, но сейчас у меня нет времени проверить это.

0 голосов
/ 14 марта 2012

Вам необходимо настроить Apache для использования LDAP / AD для аутентификации, и вам необходимо настроить путь-базовая авторизация в репозитории SVN , чтобы определить разрешения в репозитории.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...