在SVN中,如何覆盖自动Windows域身份验证

Gre*_*reg 8 svn windows tortoisesvn active-directory

我有一个构建服务器,它不是Windows域的一部分,试图通过apache连接到运行HTTPS的VisualSVN服务器,并通过Active Directory进行域登录.当我尝试使用指定域用户名连接到服务器时,我观察到客户端挂起:

svn ls --username=domainuser https://subversion.mydomain/svn/repo1/
Run Code Online (Sandbox Code Playgroud)

服务器上的日志使用构建计算机的登录名和域名字段中的构建计算机主机名显示Windows身份验证失败.命令行上提供的用户名完全被忽略.

SVN客户端:TortoiseSVN命令行工具:svn,版本1.8.1(r1503906)

在一个单独的机器上(在域上) - 我发现如果我使用cygwin svn而不会忽略--username.

Gre*_*reg 12

我找到的解决方案是禁用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': 
Run Code Online (Sandbox Code Playgroud)

(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
Run Code Online (Sandbox Code Playgroud)


bah*_*rep 5

而不是在客户端的配置中禁用协商,我建议使用 Windows 凭据管理器来存储其他帐户的单点登录凭据。

以下说明显示了如何将访问 VisualSVN 服务器的其他域凭据放入 Windows 凭据管理器:

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

  2. 单击“添加 Windows 凭据”

  3. 作为“互联网或网络地址”输入 VisualSVN 服务器机器的 FQDN,

  4. 作为“用户名”输入<DOMAIN>\<username>域中存在并有权访问 VisualSVN 服务器的用户帐户,

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

  6. 完成上述步骤后,验证您是否可以在所选用户帐户下对 VisualSVN 服务器进行身份验证。