Как мне разрешить анонимный доступ к SVN в svnserve с помощью SASL?
Я настроил svnserve с аутентификацией SASL и шифрованием для шифрования трафика. Анонимный доступ должен быть разрешен. Мой конфигурационный файл conf/svnserve.conf
(без комментариев) выглядит так:
[general]
anon-access = read
auth-access = write
realm = realm-of-repo
[sasl]
use-sasl = true
min-encryption = 128
max-encryption = 256
Связанный файл конфигурации sasl:
pwcheck_method: auxprop
auxprop_plugin: sasldb
sasldb_path: /path/to/sasldb
mech_list: DIGEST-MD5
При вводе имени пользователя и пароля все работает как положено: я могу оформить заказ и внести изменения. Однако анонимный доступ (без имени пользователя или пароля) завершается с помощью следующего сообщения об ошибке:
svn: SASL(-1): generic failure: All-whitespace username.
Как включить анонимный доступ для чтения SVN с помощью svnserve
а SASL? Я не ищу решение с Apache.
2 ответа
Недавно я искал эту информацию и решил поделиться тем, что нашел. Можно разрешить анонимный доступ при использовании SASL для аутентификации, но вы должны знать, что любой анонимный доступ не будет зашифрован или защищен целостностью.
У тебя уже есть anon-access = read
в svnserve.conf
, как требуется.
Далее вам нужно будет установить min-encryption = 0
, поскольку механизм анонимного доступа не поддерживает ни шифрование, ни защиту целостности. Пропуск этого шага сделает анонимный доступ недоступным при согласовании механизмов аутентификации.
Последний шаг - настроить механизмы аутентификации SASL в svn.conf
(ваш файл конфигурации SASL для Subversion). Измените строку:
mech_list: DIGEST-MD5
в
mech_list: DIGEST-MD5 ANONYMOUS
что сделает доступным анонимный механизм. Запустить снова svnserve
и вы сможете выполнить извлечение без запроса аутентификации. Если вы используете контроль доступа по каталогам, вы можете подтвердить, что пользователь $anonymous
был предоставлен соответствующий доступ.
Есть несколько вещей, чтобы рассмотреть. Как уже упоминалось, весь доступ, осуществляемый анонимно, будет открытым текстом, который вам может не понадобиться, если вы работаете с конфиденциальным кодом в общедоступной сети. Кроме того, все пользователи будут выполнять доступ для чтения (извлечение и т. Д.) Через анонимный доступ, поэтому ваши журналы могут быть не так полезны для отслеживания. Кроме того, если вы разрешите анонимную запись, весь код, скорее всего, будет зафиксирован анонимно, а это означает, что вы не будете знать, какие изменения были внесены кем.
Как упоминалось в комментариях, одним из вариантов является создание фактического пользователя с именем anonymous, с простым паролем (он не сможет работать без пароля), и использование контроля доступа для каждого каталога, чтобы гарантировать, что предоставляется только доступ на чтение и только для пользователя. каталоги вы выбираете. Это позволяет вам сохранять проверку шифрования / целостности, в то же время предлагая доступ, который почти так же удобен, как настоящий анонимный доступ.
use-sasl = true
принудительная аутентификация (говорит SVN запретить анонимный доступ).
Вы можете либо создать пользователя с правами только для чтения и использовать его для анонимного доступа, либо использовать http для доступа только для чтения и sasl для чтения и записи.