Я установил 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.
Я недавно искал эту информацию и думал, что поделюсь тем, что нашел. Можно разрешить анонимный доступ при использовании 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 для чтения-записи.