我有一个构build服务器不是Windows域的一部分,试图连接到一个VisualSVN服务器运行HTTPS通过Apache与域login通过Active Directory。 当我尝试使用指定域用户名连接到服务器时,我发现客户端挂起:
svn ls --username=domainuser https://subversion.mydomain/svn/repo1/
服务器上的日志使用生成计算机的login名以及“域名”字段中的生成计算机主机名显示Windows身份validation失败。 命令行上提供的用户名完全被忽略。
SVN客户端:TortoiseSVN命令行工具:svn,版本1.8.1(r1503906)
在一个单独的机器上(在域上) – 我发现,如果我使用cygwin svn,那么–username不会被忽略。
我找到的解决方案是禁用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':
要更持久地配置这个,你可以为所有匹配的服务器创建一个servers
配置文件条目。 对于Win7的C:\Users\<User>\AppData\Roaming\Subversion\servers
。
[groups] mydomain = *.mydomain [mydomain] http-auth-types=basic;digest
我建议使用Windows Credential Manager来存储单一登录的其他帐户凭证,而不是在客户端配置中禁用协商。
以下说明显示了如何将其他域凭据存入VisualSVN server到Windows Credential Manager中:
开始| 控制面板| 凭证经理 ,
点击“添加Windows凭据” ,
当“Internet或网络地址”输入VisualSVN server机器的FQDN时,
如“用户名”输入域中存在的用户帐户的<DOMAIN>\<username>
,并具有对VisualSVN server的访问权限,
填写密码字段,然后单击确定,
完成上述步骤后,验证您是否可以使用所选用户帐户向VisualSVN server进行身份验证。