Я пытаюсь настроить svnserve
с поддержкой SASL на моем сервере Slackware 13.1, и после некоторых проб и ошибок я смог заставить его работать с конфигурацией, указанной ниже:
[general]
anon-access = read
auth-access = write
realm = myrepo
[sasl]
use-sasl = true
min-encryption = 128
max-encryption = 256
pwcheck_method: auxprop
auxprop_plugin: sasldb
sasldb_path: /etc/sasl2/my_sasldb
mech_list: DIGEST-MD5
$ sasldblistusers2 -f /etc/sasl2/my_sasldb
test@myrepo: cmusaslsecretOTP
test@myrepo: userPassword
Вы заметите, что вывод sasldblistusers2
показывает мой тест пользователь как имеющий зашифрованный cmusaslsecretOTP пароль, а также простой текст пользовательский пароль пароль. то есть, если бы я бежал strings /etc/sasl2/my_sasldb
Я бы увидел тест пароль пользователя в виде открытого текста. Эти две записи пароля были созданы с помощью следующей рекомендованной команды Subversion Book:
saslpasswd2 -c -f /etc/sasl2/my_sasldb -u myrepo test
После прочтения man saslpasswd2
Вижу такой вариант:
-n Не устанавливайте для пользователя свойство userPassword открытого текста. Будут установлены только специфичные для механизма секреты (например, OTP, SRP)
Это именно то, что я хочу сделать, подавить простой текстовый пароль и использовать только секрет, зависящий от механизма (OTP в моем случае). Так что я убираюсь /etc/sasl2/my_sasldb
и повторить saslpasswd2
так как:
saslpasswd2 -n -c -f /etc/sasl2/my_sasldb -u myrepo test
Затем я продолжаю sasldblistusers2
и я вижу:
$ sasldblistusers2 -f /etc/sasl2/my_sasldb
test@myrepo: cmusaslsecretOTP
Отлично! Думаю, теперь у меня только зашифрованные пароли .... только ни линукс svn
клиент ни винда TortoiseSVN
клиент может больше подключаться к моему репо. Они оба представляют мне задачу пользователя / прохода, но это все, что я могу сделать.
Итак, какой смысл SVN поддерживать SASL, если мой sasldb должен хранить пароли в открытом виде для работы?
Вряд ли это ответ, но я хотел бы указать, что есть некоторые источники, которые прямо заявляют, что DIGEST-MD5 не поддерживает (и никогда не будет) поддерживать хешированные пароли, потому что ему нужен открытый текстовый пароль для выполнения запроса / ответа, например:
Другие источники говорят иначе: