9

我有一个不属于 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 将不会被忽略。

4

2 回答 2

15

我找到的解决方案是禁用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': 

Cygwin 用户注意事项:如果您在 Windows 下通过 Cygwin 使用 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
于 2013-11-05T23:58:25.777 回答
5

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

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

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

  2. 单击“添加 Windows 凭据”

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

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

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

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

于 2013-11-06T13:14:49.240 回答