>您可以使用基本身份验证从一个计算机代理另一个(但不要超过一个)。代理会发生是
因为 IIS 服务器将通过调用 Win32 API LogonUser 实现本地登录。由于 IIS 拥有用户
的明文密码,它可以响应远程计算机的挑战,允许 Web 服务器代表客户端操作。如果您
需要代理其他计算机的安全环境(超过单个跃点),则必须本地登录到呼叫链中的其他计
算机。通过使用基本身份验证能够实现这一点,因为您可以访问用户的名字和明文密码
,而名字和明文密码可以传递给其他应用程序(例如基于 ISAPI 或 CGI 的应用程序)
。
保护基本身份验证
值得注意的是,密码的破译相对容易,因此您应将基本身份验证的使用限制在非安全或
至多是半安全的应用程序中。
您可以通过与 SSL 结合来保护基本身份验证。这将防止密码被破译。目前的许多
Internet 应用程序都结合使用了基本身份验证和 SSL。
实现
要实现基本身份验证,应在 IIS 内对其进行配置,并确保您的用户在 Web 服务器上具
有“本地登录”权限。如果您的 ASP .NET 应用程序需要作为经过基本身份验证的用户
来运行,请使用以下 Web.config 文件配置。
// web.config 文件
<system.web>
<authentication mode="Windows" />
</system.web>
简要身份验证
简要身份验证是 Windows 2000 和 IIS 5.0 的新功能。这种身份验证形式能够加密用户
的密码信息并提供一种机制以便防止某些常见的服务器攻击(如重放攻击)。简要身份
验证不像基本身份验证那样使用明文通过网络发送凭据。相反,它使用一种由 RSA 开发
的散列机制,称为 MD5。(有关详细信息,请参阅位于
http://www.ietf.org/rfc/rfc1321.txt ;的“MD5 消息简要算法” 。)尽管它对于
Internet 来说是一个可行的身份验证选择,但客户端和服务器的要求限制了它的广泛使
用。IIS 与基本身份验证不同,而与 NTLM 和 Kerberos 类似。它不在本地登录 Web 服
务器,因此不能执行代理。
典型应用方案
以下情况下,您应考虑使用简要身份验证:
您的 Web 服务器运行 Windows 2000,并且您的用户在 Active Directory 中存储有
Windows 帐户。
您所有的客户端均使用 .NET 平台或 Internet Explorer 5.x。
您需要比基本身份验证更强大的密码加密方法。
您需要支持通过 Internet 进行身份验证。
以下情况下,您不应考虑使用简要身份验证:
您的某些客户端使用非 .NET 或 Internet Explorer 5.0(或更高版本)的平台。
您的用户在 Active Directory 中没有存储 Windows 帐户。
您需要代理。
其他考虑
选择简要身份验证时,您还应考虑以下问题。
保护简要身份验证
简要身份验证的目的是提供比基本身份验证更安全的登录方法。然而,它没有与 SSL、N
TLM、Kerberos 或证书身份验证相结合的基本身份验证安全。
通过 SSL 使用简要身份验证是一个安全的解决方案,但是其部署要求目前限制了它的广
泛使用。
简要身份验证的特定平台要求
简要身份验证要求客户端运行 .NET 或 Internet Explorer 5.x。用户帐户必须存储在
Active Directory 中,且 Active Directory 必须针对简要身份验证进行配置。
实现
您必须为简要身份验证配置 IIS。有关详情,请参阅 Microsoft 知识库文章 Q222028,
设置简要身份验证以使用 Internet Information Services 5.0(英文)。
如果您的 ASP .NET 应用程序需要作为已进行 IIS 简要身份验证的验证用户来运行,请
使用以下 Web.config 配置:
// web.config 文件
<system.web>
<authentication mode="Windows" />
</system.web>
要在 Windows 2000 中使用简要身份验证,服务器必须能访问设置为进行简要身份验证
的 Active Directory 服务器。
有关简要身份验证的详细信息,请参阅 RFC 2069 规范
http://www.ietf.org/rfc/rfc2069.txt 。
集成 Windows 身份验证
集成 Windows 身份验证(使用 NTLM 挑战/响应或 Kerberos)涉及对具有 Windows
NT 域或 Active Directory 帐户的用户进行身份验证。与基本身份验证和简要身份验证
不同,在该方法中加密密码不通过网络发送,因而非常安全。如果服务器中安装有
Active Directory 服务,且浏览器与 Kerberos V5 身份验证协议兼容,则将使用
Kerberos V5 协议和挑战/响应协议,否则将仅使用挑战/响应协议。该方法最适合
Intranet 环境。在这种环境中,用户和 Web 服务器计算机在同一个域中,管理员可以
保证每台计算机均运行 Microsoft Internet Explorer 版本 3.01 或更高版本。
典型应用方案
以下情况下,您应考虑使用集成 Windows 身份验证:
您的用户具有 Windows NT 域或 Active Directory 帐户。
您的应用程序运行于 Intranet 上(在防火墙后)。
所有客户端均运行 Internet Explorer 版本 3.01 或更高版本。
您需要执行代理(这需要 Kerberos)。
您需要为域用户采用无缝登录程序(例如,没有弹出式登录对话框)。
以下情况下,您不应考虑使用集成 Windows 身份验证:
您的用户帐户是存储在外部数据库中,而不是存储在 Windows NT 域数据库或 Active
Directory 中。
您需要支持通过 Internet 进行身份验证。
您的客户端使用 Netscape Navigator 或其他非 Microsoft 浏览器。
您需要获得客户的明文密码。
其他考虑
选择集成 Windows 身份验证时,还应考虑以下问题。
NTLM 和 Kerberos 的安全级别
这两种协议均高度安全。对于 NTLM 和 Kerberos 协议,密码不通过网络传输。NTLM 使
用一种挑战/响应机制。Kerberos 甚至更加安全,因为它支持互相验证(即,客户端可
以验证其与之通讯的服务器)。
代理问题
NTLM 协议不支持代理。当客户端的凭据传送到 IIS 服务器之后,它们不能被传送到后
端服务器进行身份验证。但是,Kerberos 支持代理,允许多个下游计算机的其他进程代
理客户端凭据。例如,您可以使用 Kerberos 将 Web 用户的凭据提供给 COM+ 中间层,
并通过该层到达 Microsoft SQL Server 数据库(配置为 Windows 集成安全性)。Acti
ve Directory 的默认配置中未启用 Kerberos 身份验证。在决定将其作为代理解决方案
之前,您必须确保您的环境支持 Kerberos。
Internet 的使用
NTLM 和 Kerberos 协议在 Internet 中均不常用。要在 Internet 中使用 Kerberos,
关键问题是安全授权需要集中并对所有用户可用。只有基础设施到位才能实现这一点。
部署 Internet 的另一个问题是非 Microsoft 浏览器不支持这些协议。对于特定的客户
群,这可能会是一个限制因素。
性能和可伸缩性
Kerberos 比 NTLM 快。但是,这两种协议均比基本身份验证或某些自定义身份验证方法
慢。如果您希望大量用户同时登录,就需要仔细设计 Active Directory 的配置。如果
您拥有数百万的潜在用户,则您可以考虑使用高性能数据库(如 SQL Server)来存储用
户的名字和密码。如果您在多层应用程序中代理安全环境,就很可能会遇到可伸缩性问
题。特别是,不能使用数据库连接池等中间层解决方案。
实现
要实现 Kerberos 或 NTLM,您需要配置 IIS 以使用集成 Windows 身份验证。如果您需
要支持运行非 Internet Explorer 的客户端,则可以启用基本身份验证以结合 NTLM 或
Kerberos。
配置 Kerberos 时,您需要考虑这些特定细节:
客户端和服务器必须都在同一 Windows 2000 域中运行 Windows 2000。
必须启用客户端的用户帐户以使用代理。
必须启用服务器的帐户以使用代理。
如果您的 ASP .NET 应用程序需要作为已由 IIS 使用集成 Windows 身份验证进行过验
证的用户来运行,请使用以下 Web.config 配置:
// web.config 文件
<system.web>
<authentication mode="Windows" />
</system.web>
有关使用 Kerberos 的详细信息,请参阅:
Windows 2000 中的 Kerberos 组件(英文)
Kerberos 说明(英文)
证书身份验证
证书是安装在计算机中的数字“密钥”。计算机试图访问服务器时,密钥将自动传送以
对用户进行身份验证。客户端证书可被映射到域或 Active Directory 中的 Windows 帐
户。如果您在 ASP .NET 中使用 Windows 身份验证提供程序,应用程序线程将作为证书
所映射的用户运行。您也可在 ASP .NET 中实现自定义身份验证,例如,您可以使用证
书内包含的电子邮件