将 IIS 身份验证用于 ASP.NET 模拟

更新:2007 年 11 月

Internet 信息服务 (IIS) 提供几个可在保护 Web 应用程序时使用的身份验证方案。常见的方案包括在企业 Intranet 中使用集成 Windows 身份验证 (NTLM) 基于 Windows 登录来确定应用程序用户的标识,或者为特定的应用程序指定单个匿名标识。然后,可以使用由 IIS 提供的 Windows 标识来确定 Web 应用程序对受保护的 Windows 资源(如使用访问控制列表 (ACL) 保护的文件或者诸如文件服务器或数据库服务器之类的网络资源)是否具有访问权限。可以对 ASP.NET 进行配置,以使用由 IIS 通过模拟功能提供的 Windows 标识。

默认情况下,ASP.NET 被配置为使用 Windows 身份验证模式,该模式将 IIS 提供的 Windows 标识应用于当前 HttpContext 对象的 User 属性。这允许您通过 User 属性(在使用匿名标识时,用户的 Name 为空)确定由 IIS 提供的标识,但是不将所提供的标识用作当前页的 WindowsIdentity。在确定应用程序对特定的文件或网络资源是否具有访问权限时,将使用应用程序的 WindowsIdentity

若要对 ASP.NET 进行配置,以便将 IIS 提供的 Windows 标识模拟为 ASP.NET 应用程序的 WindowsIdentity,请编辑该应用程序的 Web.config 文件,并将 identity 配置元素的 impersonate 属性设置为 true,如下面的示例所示。

<configuration>
  <system.web>
    <identity impersonate="true" />
  </system.web>
</configuration>

模拟功能独立于使用 authentication 配置元素配置的身份验证 mode。身份验证元素用来确定当前 HttpContextUser 属性。模拟功能用来确定 ASP.NET 应用程序的 WindowsIdentity

下面描述如何用 Intranet 方案作为示例来启用模拟功能。在此方案中,您要设置用来张贴雇员信息的内部企业网站。然而,其中一些信息仅供管理者使用。管理者信息可以张贴到雇员信息站点的子目录中,以便可以限制对这些信息的访问。IIS 使用 Windows 集成 (NTLM) 安全性来确定用户的标识。该方案假定:

  • Web 服务器已安装了 Microsoft Windows NT Server、Windows 2000 Server 或 Windows Server 2003 操作系统。

  • Web 服务器安装了 IIS 6.0。

  • Web 服务器上的硬盘已格式化为 NTFS。

  • 所有需要访问受限资源的雇员使用的都是 Windows。

作为该方案中应用程序的管理员,您将需要执行下列操作:

  1. 创建下图中所示的文件和目录:

    134ec8tc.directories(zh-cn,VS.90).gif

  2. 创建名为 Managers 的 Windows 组,它包含应有权限访问 ManagerInfo.aspx 文件的所有用户。

  3. 使用 Internet 信息服务 (IIS) 管理器来禁用对应用程序的匿名身份验证并启用集成 Windows 身份验证。

  4. 在应用程序的 Web.config 文件中,将 identity 元素的 impersonate 属性设置为 true。

  5. 为 ManagerInformation 目录设置 NTFS 访问控制列表 (ACL),只允许 Windows Manager 组和任何所需的系统帐户中的标识访问该目录。您将需要确保包括 ASP.NET 进程的标识。对于 Windows 2000 Server 或 Windows NT,ASP.NET 进程的标识是本地 ASPNET 帐户。对于 Windows Server 2003 及更高版本,ASP.NET 进程的标识是 IIS 应用程序池的标识(默认情况下是 NETWORK SERVICE 帐户)。

    134ec8tc.alert_note(zh-cn,VS.90).gif说明:

    ASP.NET 角色管理功能提供一种替代方法来限制对 Web 应用程序区域的访问。有关更多信息,请参见使用角色管理授权

请参见

概念

Web 应用程序的基本安全实施策略

其他资源

ASP.NET Web 应用程序安全性