Как мне ограничить доступ Apache / SVN к определенным пользователям (аутентификация на основе LDAP / файлов)?

StackOverflow https://stackoverflow.com/questions/484499

Вопрос

У меня есть Apache / SVN, работающий на Windows Server 2003 с аутентификацией через LDAP / Active Directory и плоский файл.

Это работает отлично, за исключением того, что Любой Пользователь LDAP может получить доступ ко всему.Я хотел бы иметь возможность ограничивать репозитории SVN по пользователям или группам.

В идеале я бы добрался до чего-то подобного:

<Location /svn/repo1>
  # Restricted to ldap-user1, file-user1, or members of ldap-group1,
  # all others denied
</Location>

<Location /svn/repo2>
  # Restricted to ldap-user2, file-user2, or members of ldap-group2,
  # all others denied
</Location>

Настоящий трюк может заключаться в том, что у меня смешанная аутентификация:LDAP и файл:

<Location /svn>
  DAV svn
  SVNParentPath C:/svn_repository
  AuthName "Subversion Repository"
  AuthType Basic
  AuthBasicProvider ldap file
  AuthUserFile "svn-users.txt" #file-based, custom users
  AuthzLDAPAuthoritative On
  AuthLDAPBindDN ldapuseraccount@directory.com
  AuthLDAPBindPassword ldappassword
  AuthLDAPURL ldap://directory.com:389/cn=Users,dc=directory,dc=com?sAMAccountName?sub?(objectCategory=person)
  Require valid-user
</Location>

В моем поиске в Google я видел, как некоторые люди достигают этого, используя authz файл, подобный этому:

<Location /svn>
  ...
  AuthzSVNAccessFile "conf/svn-authz.txt"
</Location

Затем мне нужно было бы сопоставить пользователей рекламы.Есть какие-нибудь примеры такого подхода?

Это было полезно?

Решение

На самом деле это оказалось намного проще, чем я думал, что это будет.Я добавил это в свое местоположение:

<Location /svn>
  ...
  AuthzSVNAccessFile "conf/svn-authz.txt"
</Location

В этом файле я просто указал обычные разрешения SVN (на данный момент система, похоже, не проводит различия между пользователями файлов и пользователями LDAP):

[groups]
@admin = haren

###
### Deny all but administrators to the tree
###

[/]
* =
@admin = rw


###
### Allow more specific people on a per-repository basis below
###

[repo1:/]
ldap-user1 = rw
file-user1 = rw

[repo2:/]
ldap-user2 = rw
file-user2 = rw

Я все еще играю с синтаксисом группы LDAP, чтобы заставить эту часть работать.Любые предложения приветствуются.

Другие советы

Еще один альтернативный метод для всех, кто заинтересован:

Require ldap-group cn=SVN Users,cn=Users,dc=company,dc=com

Предполагается, что вы создали группу под названием SVN Users в Active directory.Обратите внимание, что вокруг группы нет двойных кавычек.

Используйте это вместо Require valid-user

Тогда вам, вероятно, не придется перезапускать apache всякий раз, когда у вас будут какие-либо изменения, просто добавьте пользователя в группу в AD

Ты должен не использование

Require valid-user

но используйте

Require group
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top