我有一个构建服务器,它不是Windows域的一部分,试图通过apache连接到运行HTTPS的VisualSVN服务器,并通过Active Directory进行域登录。当我尝试使用指定域用户名连接到服务器时,我观察到客户端挂起:
svn ls --username=domainuser https://subversion.mydomain/svn/repo1/
服务器上的日志使用构建计算机的登录名和域名字段中的构建计算机主机名显示Windows身份验证失败。命令行上提供的用户名完全被忽略。
SVN客户端:TortoiseSVN命令行工具:svn,版本1.8.1(r1503906)
在另一台机器上(在域上) - 我发现如果我使用cygwin svn,则不会忽略--username。
答案 0 :(得分:11)
我找到的解决方案是禁用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用户:如果您通过Cygwin在Windows下使用SVN,那么您需要在命令中添加引号,如下所示:$ 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
答案 1 :(得分:3)
我建议使用Windows Credential Manager存储其他帐户的单点登录凭据,而不是在客户端的配置中禁用协商。
以下说明显示如何将其他域凭据访问VisualSVN Server到Windows Credential Manager中:
开始|控制面板|凭证管理器,
点击'添加Windows凭据',
作为'互联网或网络地址'输入VisualSVN的FQDN 服务器的机器,
当'用户名'输入该用户帐户的<DOMAIN>\<username>
存在于域中并具有对VisualSVN服务器的访问权限,
填写密码字段,然后单击“确定”,
完成上述步骤后,确认您可以在所选用户帐户下对VisualSVN Server进行身份验证。