Разрешить SVN анонимный доступ на чтение от localhost - PullRequest
3 голосов
/ 13 февраля 2012

У меня есть SVN-репозиторий, который настроен на использование базовой аутентификации через Apache httpd для ограничения доступа указанным пользователям. Для поддержки сервера непрерывной интеграции (и других служб только для чтения), работающих на том же сервере, я хотел бы разрешить анонимный доступ на чтение с локального хоста.

Пройдя некоторое исследование (т. Е. Поиск в Google), я решил попробовать следующую конфигурацию Apache:

<Location /svn>
   DAV svn
   SVNParentPath /var/svn

   AuthType Basic
   AuthName "SVN"
   AuthBasicProvider external
   AuthExternal pwauth

   #Only allow specified users to login to SVN
   require user UID1
   require user UID2
   require user UID3

   #Allow anonymous reads from localhost
   <LimitExcept GET PROPFIND OPTIONS REPORT>
      Order allow,deny
      Allow from 127.0.0.1
   </LimitExcept>
</Location>

Когда я пытаюсь сделать анонимную проверку с локального сервера, мне все равно предлагается пароль (в данном случае для пользователя root).

Есть какие-нибудь мысли или предложения относительно того, что я могу делать неправильно или как мне следует правильно настроить вещи, чтобы это допустить?

Моя первоначальная попытка настроить анонимный доступ для чтения основана на информации на этой странице.

Ответы [ 5 ]

1 голос
/ 13 февраля 2012
  Satisfy Any
  require valid-user

хорошо работает для меня (может оформить заказ, не может зафиксировать)

Редактировать

Мой блок с соответствующими и не относящимися к делу частями

<Location /svn/>
  DAV svn

  SVNListParentPath on
  SVNParentPath "D:/Repositories/"
  SVNIndexXSLT "/svnindex.xsl"

  SVNPathAuthz short_circuit

  SVNCacheTextDeltas off
  SVNCacheFullTexts off

  AuthName "VisualSVN Server"
  AuthType Basic
  AuthBasicProvider file
  AuthUserFile "D:/Repositories/htpasswd"
  AuthzSVNAccessFile "D:/Repositories/authz"

  Satisfy Any
  require valid-user

  # Add Expires/Cache-Control header explictly
  ExpiresActive on
  ExpiresDefault access
</Location>

если я пропущу Satisfy Any, я должен аутентифицировать любой запрос

0 голосов
/ 16 сентября 2014

Даже я не смог решить проблему анонимного доступа.

Но вместо того, чтобы создавать нового пользователя только для чтения, я получил интеграцию (с Redmine) для работы с использованием URL-адреса на основе файлов.Поэтому вместо ссылки на URL-адрес http (который требует аутентификации) я использую файл: ///.Это не требует аутентификации.

0 голосов
/ 22 февраля 2012

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

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

Это не было идеальным решением ... но оно должно нормально работать.

0 голосов
/ 13 февраля 2012

Я не думаю, что это сработает, директива require user активна для всего блока местоположения.

Моей первой мыслью было поместить «требуемый пользователь» в блок ограничения, это не будет работать, потому что блок ограничения активен независимо от того, с какого ip вы запрашиваете данные.

создайте второй каталог с именем svn-localhost, подключите туда свой корень svn второй раз, когда присутствует только лимитный блок.

0 голосов
/ 13 февраля 2012

Я думаю, что вы после Satisfy Any в нижней части блока Location, что позволяет получить доступ, если любая из директив Allow и Require совпадает (в отличие от значения по умолчанию) , что требует их все , чтобы соответствовать).

Документация здесь .

...