Windows 身份验证提供程序

更新:2007 年 11 月

在 ASP.NET 应用程序中,Windows 身份验证将 Microsoft Internet 信息服务 (IIS) 所提供的用户标识视为已经过身份验证的用户。IIS 提供了大量用于验证用户标识的身份验证机制,其中包括匿名身份验证、Windows 集成的 (NTLM) 身份验证、Windows 集成的 (Kerberos) 身份验证、基本(base64 编码)身份验证、摘要式身份验证以及基于客户端证书的身份验证。

在 ASP.NET 中,使用 WindowsAuthenticationModule 模块来实现 Windows 身份验证。该模块根据 IIS 所提供的凭据构造一个 WindowsIdentity,并将该标识设置为该应用程序的当前 User 属性值。

Windows 身份验证是 ASP.NET 应用程序的默认身份验证机制,并指定作为使用 authentication 配置元素的应用程序的身份验证模式,如下面的示例所示。

<system.web>
  <authentication mode="Windows"/>
</system.web>

模拟 Windows 标识

尽管 Windows 身份验证模式根据 IIS 所提供的凭据将当前 User 属性值设置为 WindowsIdentity,但它不修改提供给操作系统的 Windows 标识。提供给操作系统的 Windows 标识用于进行权限检查(如 NTFS 文件权限检查)或者用于使用集成安全性连接到数据库。默认情况下,此 Windows 标识是 ASP.NET 进程的标识。在 Microsoft Windows 2000 和 Windows XP Professional 上,此标识是 ASP.NET 辅助进程的标识,即本地 ASPNET 帐户。在 Windows Server 2003 上,此标识是 ASP.NET 应用程序所属的 IIS 应用程序池的标识。默认情况下,此标识是 NETWORK SERVICE 帐户。

通过启用模拟功能,可以将 ASP.NET 应用程序的 Windows 标识配置为 IIS 所提供的 Windows 标识。也就是说,指示 ASP.NET 应用程序模拟 IIS 为 Windows 操作系统验证的所有任务(包括文件和网络访问)提供的标识。

若要为 Web 应用程序启用模拟功能,请在该应用程序的 Web.config 文件中将 identity 元素的 impersonate 属性设置为 true,如下面的代码示例所示。

<system.web>
  <authentication mode="Windows"/>
  <identity impersonate="true"/>
</system.web>

有关 ASP.NET 进程标识的更多信息,请参见配置 ASP.NET 进程标识。有关模拟的更多信息,请参见 Impersonate 方法。

使用 NTFS ACL 启用授权

通过使用 NTFS 文件系统和访问控制列表 (ACL) 保护 ASP.NET 应用程序文件,可以提高该应用程序的安全性。使用 ACL 可以指定哪些用户和哪些用户组可以访问应用程序文件。有关 Windows 标识作为 ASP.NET 页的标识运行所需的最少 NTFS 文件权限的列表,请参见 ASP.NET 必需的访问控制列表 (ACL)

907hb5w9.alert_note(zh-cn,VS.90).gif说明:

也可以使用 ASP.NET 角色管理 Web 应用程序的页和节的用户授权。有关更多信息,请参见使用角色管理授权

请参见

任务

如何:创建 WindowsPrincipal 对象

如何:创建 GenericPrincipal 和 GenericIdentity 对象

其他资源

ASP.NET Web 应用程序安全性

ASP.NET 身份验证