用于控制 Web 应用程序的应用程序标识。该元素可在任何级别(计算机、站点、应用程序、子目录或页)进行声明。
配置结构的示例:
<configuration>
<system.web>
<identity>
<identity impersonate="true|false"
userName="domain\username"
password="password"/>
属性 | 选项 | 描述 |
---|---|---|
impersonate | 指定是否对每个请求使用客户端模拟。 | |
true | 指定使用客户端模拟。 | |
false | 指定不使用客户端模拟。 |
属性 | 描述 |
---|---|
userName | 指定当 impersonate 设置为 userName 和 password 以明文形式存储在配置文件中。尽管 IIS 将不会为响应用户代理请求而传输 .config 文件,但是却可通过其他方法读取配置文件,例如,通过在包含服务器的域中拥有适当凭据的、已通过身份验证的用户。为了维护安全性,标识部分支持在注册表中存储加密的 userName 和 password 属性。凭据必须采用通过 Windows 2000 和 Windows XP 数据保护 API (DPAPI) 加密功能加密的 REG_BINARY 格式。详细信息,请参阅下面的“注释”和“示例”部分。 |
password | 指定当 impersonate 设置为 |
将用户名和密码存储到注册表中
要加密用户名和密码并将其存储在注册表中,请按如下方式设置 userName 和 password。
userName="registry:HKLM\Software\AspNetProcess,Name"
password="registry:HKLM\Software\AspNetProcess,Pwd"
关键字 registry 后面、逗号前面的字符串部分表示 ASP.NET 打开的注册表项的名称。逗号后面的部分包含一个字符串值名,ASP.NET 将从中读取凭据。逗号是必需的,而且凭据必须存储在 HKLM 配置单元中。如果配置格式不正确,ASP.NET 将不会启动工作进程,随后将出现当前帐户创建失败的代码路径。
凭据必须采用 REG_BINARY 格式,其中包含对 Windows API 函数 CryptProtectData 调用的输出。您可以使用 ASP.NET 设置注册表控制台应用程序 (Aspnet_setreg.exe) 创建加密凭据并将其存储在注册表中,该应用程序使用 CryptProtectData 完成加密。要下载 Aspnet_setreg.exe 以及 Visual C++ 源代码和帮助,请访问 www.asp.net 网站并搜索 aspnet_setreg。
您应该对存储加密凭据的注册表项配置访问权限,以便只对 Administrators 和 SYSTEM 提供访问权限。因为该注册表项将由作为 SYSTEM 运行的 ASP.NET 进程读取,您应该设置下列权限:
Administrators:F
SYSTEM:F
CREATOR OWNER:F
ProcessAccount:R
这将提供两道防线来保护数据。
下例将客户端标识模拟设置为
<configuration>
<system.web>
<identity impersonate="true"/>
</system.web>
</configuration>
下例指定了加密的用户名和密码将存储在注册表中用户定义的项 AspNetIdentity
下面。
<configuration>
<system.web>
<identity>
userName="registry:HKLM\Software\AspNetIdentity,Name"
password="registry:HKLM\Software\AspNetIdentity,Pwd"
</identity>
</system.web>
</configuration>