Невозможно настроить аутентификацию на основе пути в Subversion

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

    [groups]
    sales-admin = alexa, miked, chrism

    [/]
    $authenticated = rw

    [Product_Sales:/]
    ~@sales-admin =

Это должно дать всем аутентифицированным пользователям доступ ко всем репозиториям, размещенным на этом сервере, но ограничить доступ для чтения и записи репозитория Product_Sales к группе sales-admin. Однако на практике это не так, ни одно из моих разрешений не работает должным образом. Вот что происходит в каждом случае использования:

  1. Когда я пытаюсь обновить, зафиксировать или извлечь данные из любого другого репозитория, я получаю сообщение об ошибке "Доступ запрещен", и мне не дают возможности аутентифицироваться даже после очистки сохраненных учетных данных из TortoiseSVN.

  2. Маркер $authenticated не работает. Если я заменю "$authenticated = rw" на "* = rw", я снова получаю доступ, но мне больше не требуется входить в систему, даже если я не предоставил никаких учетных данных. Попытка коммитить заставляет меня войти в систему, но мне нужно, чтобы аутентификация всегда происходила при взаимодействии с репозиторием, в том числе при операциях только для чтения.

  3. Установка разрешений в репозитории 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

Т.е. весь доступ явно отключен, включена только одна группа в том же явном стиле

Другие вопросы по тегам