Невозможно настроить аутентификацию на основе пути в Subversion
Я бесчисленное количество раз следил за книгой о подрывной деятельности, чтобы попытаться установить правильную авторизацию пути на нашем сервере подрывной деятельности, но я не смог сделать эту работу. Вот мой файл правил доступа:
[groups]
sales-admin = alexa, miked, chrism
[/]
$authenticated = rw
[Product_Sales:/]
~@sales-admin =
Это должно дать всем аутентифицированным пользователям доступ ко всем репозиториям, размещенным на этом сервере, но ограничить доступ для чтения и записи репозитория Product_Sales к группе sales-admin. Однако на практике это не так, ни одно из моих разрешений не работает должным образом. Вот что происходит в каждом случае использования:
Когда я пытаюсь обновить, зафиксировать или извлечь данные из любого другого репозитория, я получаю сообщение об ошибке "Доступ запрещен", и мне не дают возможности аутентифицироваться даже после очистки сохраненных учетных данных из TortoiseSVN.
Маркер $authenticated не работает. Если я заменю "$authenticated = rw" на "* = rw", я снова получаю доступ, но мне больше не требуется входить в систему, даже если я не предоставил никаких учетных данных. Попытка коммитить заставляет меня войти в систему, но мне нужно, чтобы аутентификация всегда происходила при взаимодействии с репозиторием, в том числе при операциях только для чтения.
Установка разрешений в репозитории Product_Sales вообще не дает мне доступа к Product_Sales, даже если у меня установлен * = rw в корне сервера.
Мне нужно знать, что не так с моими правилами доступа. За последние несколько лет я несколько раз пытался заставить авторизацию на основе пути работать, но безрезультатно. Если кто-нибудь может помочь мне здесь, я был бы очень признателен. Я просто хочу узнать, что я неправильно понимаю в объяснении пути на основе аутентификации в Subversion Book.
http://svnbook.red-bean.com/en/1.7/svn.serverconfig.pathbasedauthz.html
РЕДАКТИРОВАТЬ: Вот моя информация о сервере Subversion
Collabnet Subversion Edge 3.2.2-3395.103
Subversion 1.7.8-3395.103
1 ответ
У меня нет окончательного ответа (пока), только некоторые идеи
Если я заменю "$authenticated = rw" на "* = rw", я снова получаю доступ, но мне больше не требуется входить в систему, даже если я не предоставил учетные данные
* = rw
означает "каждый может читать и писать", каждый "даже анонимный". У вас есть Apache или SVN-сервер? В случае Apache у вас есть (необходимо) ограничить доступ к хранилищу на уровне Apache до доступа на основе пути
И, кстати, магические токены применимы для SVN 1.5+ (есть ли шанс иметь более старую версию?)
Обновить
Курс отладки
- Получите доступ "только для аутентификации" ко всем вашим репозиториям (анонимный даже не может читать). Для местоположения, связанного с svn в httpd.conf, это будет (минимальная версия, базовая аутентификация - плохо)
DAV svn
SVNListParentPath on
SVNParentPath ...
AuthName ...
AuthType Basic
AuthBasicProvider file
AuthUserFile ...
# AuthzSVNAccessFile ...
Require valid-user
в этой конфигурации только пользователи, перечисленные в AuthUserFile, могут предоставить полный доступ к любому репо, любой части репо
Добавьте проверки на основе пути, раскомментируйте AuthzSVNAccessFile. Потому что с использованным конфигом анонимные пользователи не будут иметь никакого доступа к репо,
$authenticated
токен становится чрезмерным, $authenticated == * в этой ограниченной областиДля [Product_Sales:/] для правила "Доступ имеется только у одной группы", я предпочту пуленепробиваемое, перегруженное определение
[Product_Sales:/]
* =
@sales-admin = rw
Т.е. весь доступ явно отключен, включена только одна группа в том же явном стиле