配置 ASP.NET 进程标识

ASP.NET 工作进程 (Aspnet_wp.exe) 应使用不同于 Windows 默认的“系统”身份的享有较少特权的身份运行。这允许进程作为一个相对不受信任的用户来运行,以便使由其主控的 Web 应用程序没有管理特权,且不会损坏服务器的完整性。如果 ASP.NET 工作进程的安全遭到破坏,只会危及相对较弱帐户的安全,入侵者不会拥有对整个服务器的管理访问权限。

要在 Windows 2000 和 Windows Server 中使用 ASP.NET 工作进程自身的帐户运行它,您可将下面的两个属性应用到 <processModel> 配置元素中:

如下示例显示了如何在配置文件的 <processModel> 节中设置这些属性,以使用本地用户帐户运行工作进程。

<system.web>
    <processModel enable="true"
                  userName="LOCALMACHINE\IUSR_SomeUser"
                  password="password"/>
</system.web>

“系统”和“计算机”是两个预定义的 userName 身份设置。“系统”帐户使用与 Internet 信息服务 (IIS) 本身相同的身份(通常是“系统”)运行工作进程。“计算机”帐户使用的一个特殊的无特权帐户(称为 ASPNET)运行工作进程。两个身份的密码都是 AutoGenerate,这表示进程无需向操作系统提供凭据。

要允许使用特殊的 ASPNET 帐户运行进程,请在 Machine.config 文件中添加下列行。若要更改 Machine.config 中的进程帐户,必须重置 IIS 或停止 Aspnet_wp.exe 进程。

<system.web>
    <processModel enable="true"
                  userName="Machine"
                  password="AutoGenerate"/>
</system.web>

对于 Internet 信息服务第 6 版中启用的新进程模型,ASP.NET 将不使用自身的进程模型。其身份是从 IIS 工作进程中继承来的。

仅当您将相应的帐户权利显式添加到运行工作进程时使用的帐户中时,才能支持下面的示例。将明文密码保存在配置文件中会有风险。对于发布到 Internet 上的应用程序,您应该使用其他方法以特定身份运行应用程序,或者将加密凭据存储在注册表中。有关详细信息,请参阅 <processModel> 元素

<system.web>
    <identity impersonate="true" 
              userName="LOCAL\SomeUser" 
              password="password"/>
</system.web>

下列各段介绍的技巧是 ASP 站点的管理员经常使用的技巧,并且在进程身份较弱的 ASP.NET 环境中起作用。

应用程序允许匿名用户进行访问(假定身份验证方案允许匿名用户访问),且匿名用户也配置为应用程序所需的帐户。同时,应用程序还使用基于请求的模拟,并且应用程序代码作为模拟帐户来执行。因为模拟只用于请求处理程序,所以进程帐户仍读取和编译配置。

如果您在使用具有管理员特权的帐户运行工作进程和使用较弱的帐户运行工作进程之间来回替换,则较弱的帐户不能读取用于 Forms 身份验证的本地安全机构 (LSA) 机密,因此所有 Forms 身份验证用户都必须重新进行身份验证。从没有管理特权的帐户到有管理特权的帐户转换时,并不适用。它适用于具有下列配置的应用程序。

<system.web>
    <authentication mode="Forms"/>
    <machineKey validationKey="AutoGenerate"   
                decryptionKey="AutoGenerate"/>
</system.web>


相关主题


© 1997-2003 Microsoft Corporation。保留所有权利