Team Foundation Server、基本身份验证和摘要式身份验证
更新:2007 年 11 月
Visual Studio 2008 可以支持基本身份验证和摘要式身份验证模式。通过将您的 Team Foundation Server 部署配置为使用具有安全套接字层 (SSL) 的 HTTPS 和基本或摘要式身份验证,您无需使用虚拟专用网络 (VPN) 连接即可与您的 Team Foundation Server 建立外部连接。
配置
为了支持与 Team Foundation Server 部署的外部连接,您必须对 Internet 信息服务 (IIS) 进行配置以启用基本和/或摘要式身份验证。此外,还必须配置 Internet 服务器应用程序编程接口 (ISAPI) 筛选器。ISAPI 筛选器是可用来修改和增强 IIS 所提供的功能的 DLL 文件。ISAPI 筛选器始终在运行 IIS 的服务器上运行。您必须使用 Web 代理和/或要求使用基本或摘要式身份验证的任何客户端的 IP 地址来配置 ISAPI 筛选器(SP1 的一部分)。
基本身份验证和摘要式身份验证
基本身份验证是 HTTP 1.0 规范的一部分。它使用 Windows 用户帐户。在基本身份验证期间,浏览器提示用户填写用户名和密码。用户名和密码信息使用 Base64 编码并通过 HTTP 来传输。默认情况下,基本身份验证要求 Windows 用户帐户拥有 Web 服务器上的本地登录权限。在工作组部署和域部署中均可使用基本身份验证。尽管大多数 Web 服务器、代理服务器和 Web 浏览器都支持基本身份验证,但它并不安全。因为 Base64 编码的数据很容易解码,所以基本身份验证实质上是以明文的形式发送密码。使用一些可公开获得的工具监视网络上的通信,可以很轻松地截获并解密这些密码。
摘要式身份验证采用的是一种质询/响应的机制,它在网络上发送摘要(也称为哈希),而不发送密码。在摘要式身份验证期间,IIS 向客户端发送质询以创建一个摘要,然后将该质询发送给服务器。然后,客户端发送一个基于用户密码和数据(对于客户端和服务器都是已知的)的摘要,作为对质询的响应。服务器使用与客户端相同的过程创建自己的摘要,其用户信息获取自 Active Directory。如果服务器创建的摘要与客户端创建的摘要相匹配,则 IIS 将认为客户端通过了身份验证。只能在 Active Directory 域部署中使用摘要式身份验证。同基本身份验证相比,摘要式身份验证只有少许改进。攻击者可以记录客户端和服务器之间的通信,然后使用此通信信息重播该事务。摘要式身份验证也依赖于 HTTP 1.1 协议。并非所有的 Web 浏览器都支持该协议。而且,必须正确配置摘要式身份验证,否则,尝试访问 Team Foundation Server 将失败。除非您的部署满足摘要式身份验证的所有要求,否则请不要选择摘要式身份验证。有关摘要式身份验证的更多信息,请参见 Microsoft 网站 (https://go.microsoft.com/fwlink/?LinkID=89709)。
限制
除了上述域和工作组的要求,基本身份验证和摘要式身份验证本身都不足以为外部客户端提供网络安全。因此,不应将 Team Foundation Server 配置为支持外部客户端,除非您还将这些连接配置为要求具有 SSL 的 HTTPS。
ISAPI 筛选器配置
可将 ISAPI 筛选器配置为对任意一组给定的 IP 地址实施规则。大多数管理员主要关心的是为外部 IP 地址配置 ISAPI 筛选器规则,实际上也可为内部地址配置规则。任何在 ISAPI 筛选器规则中配置的 IP 地址都必须遵循在筛选器中指定的规则。未在该文件中指定的地址可能允许,也可能不允许连接到 Team Foundation Server,这取决于 RequireSecurePort 设置。
ISAPI 筛选器使用 AuthenticationFilter.ini 文件作为其配置设置。必须使用适合您的部署的设置配置该文件。该文件可以使用下面的配置项和值:
项 |
受支持的值 |
---|---|
RequireSecurePort |
True False |
ProxyIPList |
IPaddress(可以是多个地址,由分号分隔) |
SubnetList |
IPaddress/subnetmask(可以是多个地址,由分号分隔) |
[config] |
ISAPI 筛选器文件的节标题 |
上述项可进一步如下定义:
RequireSecurePort 如果您将 RequireSecurePort 配置为 True,则所有连接都必须使用 HTTPS/SSL 以及摘要式或基本身份验证,除非它们是在 SubnetList 中指定的地址之一。如果您将 RequireSecurePort 配置为 False,则只有使用在 ProxyIPList 中指定的地址的连接将被要求使用 HTTPS/SSL 以及摘要式或基本身份验证。
ProxyIPList 存在要为其实施摘要式或基本身份验证的一个或多个 IP 地址。理解此项的含义的最简单的方法是将其视为“仅对这些地址要求基本或摘要式身份验证”。为此项指定的地址将被要求使用摘要式或基本身份验证和 HTTPS/SSL。此项优先于 SubnetList;如果存在 ProxyIPList 项,则 SubnetList 项及其值将被忽略。
SubnetList SubnetList 是不打算为其实施摘要式或基本身份验证的 IP 地址/子网掩码对。理解此项的含义的最简单的方法是将其视为“除这些地址外,要求所有地址使用基本或摘要式身份验证”。为此项指定的地址将不被要求使用摘要式或基本身份验证和 HTTPS/SSL。所有未为此项指定的地址将被要求使用摘要式或基本身份验证。如果 ISAPI 筛选器中存在 ProxyIPList 项,则 SubnetList 项及其值将被忽略。
请参见
任务
演练:设置带有安全套接字层 (SSL) 和 ISAPI 筛选器的 Team Foundation Server
演练:将 Team Foundation Server 设置为要求 HTTPS 和安全套接字层 (SSL)