在SVN中,我如何覆盖自动Windows域身份validation

我有一个构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-typenegotiate ”。 这可以防止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中:

  1. 开始| 控制面板| 凭证经理

  2. 点击“添加Windows凭据”

  3. “Internet或网络地址”输入VisualSVN server机器的FQDN时,

  4. “用户名”输入域中存在的用户帐户的<DOMAIN>\<username> ,并具有对VisualSVN server的访问权限,

  5. 填写密码字段,然后单击确定,

  6. 完成上述步骤后,验证您是否可以使用所选用户帐户向VisualSVN server进行身份验证。