В SVN как переопределить автоматическую аутентификацию домена Windows
У меня есть сервер сборки, который не является частью домена Windows, пытающегося подключиться к серверу VisualSVN, работающему по протоколу HTTPS, через apache с входом в домен через Active Directory. Когда я пытаюсь подключиться к серверу, указав имя пользователя домена, я наблюдаю зависание клиента:
svn ls --username=domainuser https://subversion.mydomain/svn/repo1/
Журналы на сервере показывают сбои аутентификации Windows с использованием имени входа для машины сборки и имени хоста машины сборки в поле Имя домена. Имя пользователя, указанное в командной строке, полностью игнорируется.
Клиент SVN: инструменты командной строки TortoiseSVN: svn, версия 1.8.1 (r1503906)
На отдельной машине (в домене) - я обнаружил, что --username не будет игнорироваться, если я вместо этого использую cygwin svn.
2 ответа
Решение, которое я нашел, состояло в том, чтобы отключить http-auth-type
'negotiate
". Это предотвращает автоматический доступ к учетным данным Windows.
Я проверил это, используя переопределение командной строки, он запросил пароль для пользователя в командной строке:
svn ls --username=domainuser --config-option servers:global:http-auth-types=basic;digest https://subversion.mydomain/svn/repo1/
Authentication realm: <https://subversion.mydomain/svn/repo1/> VisualSVN Server
Password for 'domainuser':
(Примечание для пользователей Cygwin: если вы используете SVN под Windows через Cygwin, вам нужно будет добавить к вашей команде кавычки, например: $ svn ls --username=domainuser --config-option "servers:global:http-auth-types=basic;digest" https://subversion.mydomain/svn/repo1/
- В противном случае точка с запятой будет рассматриваться как разделитель команд.)
Чтобы настроить это более постоянно, вы можете сделать servers
запись файла конфигурации для всех соответствующих серверов. Для Win7 это C:\Users\<User>\AppData\Roaming\Subversion\servers
,
[groups]
mydomain = *.mydomain
[mydomain]
http-auth-types=basic;digest
Вместо того, чтобы отключать согласование в конфигурации клиента, я бы предложил использовать диспетчер учетных данных Windows для хранения учетных данных другой учетной записи для единого входа.
В следующей инструкции показано, как поместить другие учетные данные домена для доступа к серверу VisualSVN в диспетчере учетных данных Windows:
Начало | Панель управления | Диспетчер учетных данных,
Нажмите "Добавить учетные данные Windows",
В качестве "Интернет или сетевой адрес" введите полное доменное имя компьютера VisualSVN Server,
Как "Имя пользователя" введите
<DOMAIN>\<username>
учетной записи пользователя, которая существует в домене и имеет права доступа к серверу VisualSVN,Заполните поле пароля и нажмите ОК,
Убедитесь, что вы можете пройти аутентификацию на сервере VisualSVN под выбранной учетной записью пользователя после выполнения вышеуказанных действий.