Windows Server 2003 通过 Internet 信息服务 6.0 (IIS 6) 应用程序池提供了进程独立,可以使多个应用程序运行在不同的 IIS 辅助进程实例中。进程独立在 Windows 2000 上是不可能的,因为所有 Web 应用程序都运行在单独的 ASP.NET 辅助进程实例中,而应用程序域提供了独立性。
表 1 总结了 Windows 2000 和 Windows Server 2003 上应用程序独立的各种选择。 运行着 .NET Framework 1.1 版的 Windows Server 2003 是寄宿多个 ASP.NET 应用程序的推荐平台,因为它支持进程独立,并为应用程序独立提供了最大范围的选择。
Windows 2000 上的 ASP.NET 体系结构 在 Windows 2000 上,多个 Web 应用程序运行在一个 ASP.NET 辅助进程 (Aspnet_wp.exe) 实例中。每个应用程序都驻留在自己的应用程序域中,为托管代码提供了一定程度的独立性。Windows 2000/IIS 5 体系结构如图 1 所示。 图 1. 带有 IIS 5 的 Windows 2000 上的 ASP.NET 体系结构
表 2 总结了图 1 中所描述的体系结构的组成部分 Windows Server 2003 上的 ASP.NET 体系结构 在 Windows Server 2003 上,体系结构有所改变,因为 IIS 6 允许多个进程用于寄宿不同的 Web 应用程序。此体系结构如图 2 所示。
注 IIS 6 支持向后兼容模式,从而能够支持 IIS 5 ASP.NET 辅助进程模型。 图 2. 带有 IIS 6 的 Windows Server 2003 上的 ASP.NET 体系结构
与 Windows 2000 下的 ASP.NET 体系结构相比,Windows Server 2003 中的主要区别在于可以用不同的 IIS 辅助进程实例 (W3wp.exe) 寄宿 Web 应用程序。默认时,这些应用程序是使用 NT Authority\NetworkService 帐户运行的,这是一个最低特权本地帐户,它用作跨网络的计算机帐户。运行在网络服务帐户环境下的 Web 应用程序需要给远程服务器提供计算机的凭据以进行身份验证。
表 3 总结了图 2 中所描述的体系结构的主要组成部分。 用标识隔离应用程序 从操作系统标识的观点来看,可以通过控制用来运行每个应用程序的帐户标识隔离 ASP.NET Web应用程序。如果每个应用程序使用不同的固定帐户标识,就可以分别授权和审核每个应用程序。
注 如果要寄宿使用 .NET Framework 1.0 版构建的 ASP.NET Web应用程序,进程帐户需要适当的对当前文件系统驱动器根的访问权限。有关更多信息,请参阅 Microsoft 知识库文章 317955“FIX:'Failed to Start Monitoring Directory Changes' Error Message When You Browse to an ASP.NET Page”。
如果共享 Web 服务器上每个应用程序要想都使用不同的固定标识,可以采用两种方式:
匿名帐户模拟
固定标识模拟
匿名帐户模拟
通过匿名帐户模拟,应用程序可以模拟 IIS 指定、并为应用程序的虚拟目录配置的匿名帐户。如果您的应用程序要独立于 IIS 对用户进行身份验证(如,通过使用窗体或者 Microsoft Passport 身份验证),就可以使用此方式。在这些情况下,可以通过使用固定的匿名帐户隔离应用程序。一旦调用方通过了身份验证,角色也经过了检查,就可以将可信服务器模型用于下游的资源访问,其中已配置的匿名帐户提供了可信的标识。
allowOverride="false" 设置防止了单个的应用程序改写 Web.config 文件中的这一设置。有关 元素的更多信息,请参阅“保护 ASP.NET 应用程序的安全”单元中的“Machine.config 和 Web.config 详解”部分。
3. 使用 Internet 服务管理器配置每个应用程序的虚拟目录,以使用不同的匿名用户帐户。
1. 从管理工具程序组启动 Internet 服务管理器。
2. 选择应用程序的应用程序目录,鼠标右键单击,然后单击 Properties。
3. 单击 Security 选项卡,然后单击 Edit 按钮。
4. 确保选择了 Anonymous access,然后单击 Edit。
5. 输入已创建的匿名帐户的用户名,或者单击 Browse,从列表中选择用户名。
6. 如果想使用帐户访问远程资源,请清除匿名帐户的 Allow IIS to Control Password 复选框。
如果选择了 Allow IIS to Control Password,使用指定匿名帐户创建的登录会话的网络凭据将为 NULL,而且不能用于访问必需进行身份验证的网络资源。如果清除了这一复选框,登录会话将是一个需要网络凭据的交互式登录会话。但是,如果帐户是机器本地帐户,则网络上其他机器都无法对此帐户进行身份验证。在此情况下,应该在目标远程服务器上创建一个重复帐户。
注 所创建的登录会话的类型是由 LogonMethod IIS 元数据库设置控制的。默认时是交互式登录会话,需要具有“Allow Log on Locally”用户特权的帐户。
IIS 6 上没有 Allow IIS to Control Password 选项。IIS 6 将默认的 LogonMethod 设置为 Network Cleartext,这要求帐户有“Access this computer from the network”用户特权。这使帐户由网络服务器进行身份验证。