Назад | Перейти на главную страницу

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

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

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

    [/]
    $authenticated = rw

    [Product_Sales:/]
    ~@sales-admin =

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

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

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

  3. Установка разрешений в репозитории Product_Sales вообще не дает мне доступа к Product_Sales, даже если в корне сервера установлено * = rw.

Мне нужно знать, что не так с моими правилами доступа. Я несколько раз пытался заставить работать авторизацию на основе пути за последние несколько лет, но безуспешно. Если кто-нибудь может мне помочь, я был бы очень признателен. Я просто хочу знать, что я неправильно понимаю в объяснении аутентификации на основе пути в книге Subversion.

http://svnbook.red-bean.com/en/1.7/svn.serverconfig.pathbasedauthz.html

РЕДАКТИРОВАТЬ: Вот моя информация о сервере подрывной деятельности

Collabnet Subversion Edge 3.2.2-3395.103

Subversion 1.7.8-3395.103

У меня нет окончательного ответа (пока), только некоторые идеи

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

* = rw в точности означает «Все могут читать и писать», все «даже анонимны». У вас есть SVN-сервер на базе Apache или svnserve? В случае 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

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