使用匿名 Internet 用户帐户
如果将 IIS 配置为使用匿名身份验证,则可以使用匿名 Internet 用户帐户访问网络资源。如果以下任一情况属实,就会发生这种情况:
- 应用程序支持匿名访问。
- 应用程序使用表单、Passport 或自定义身份验证(其中将 IIS 配置为使用匿为访问)。
使用匿名帐户访问远程资源
1. 将 IIS 配置为使用匿名身份验证。可以根据应用程序的身份验证要求,将 ASP.NET 身份验证模式设置为“Windows”、“表单”、“Passport”或“无”。
2. 将 ASP.NET 配置为使用模拟。在 Web.config 中使用下列设置:
<identity impersonate="true"/>3. 将匿名帐户配置为权限最少的域帐户,
-或-
在远程计算机上使用相同的用户名和密码复制匿名帐户。在不信任的域之间进行调用时,或者通过没有打开支持集成 Windows 身份验证所需端口的防火墙进行调用时,必须使用此方法。
要支持这种方法,您还必须:a. 使用 Internet 服务管理器清除匿名帐户的“允许 IIS 控制密码”复选框。
如果选择此选项,使用指定匿名帐户创建的登录会话最终得到的是 NULL 网络凭据(因此不能用来访问网络资源)。如果不选择此选项,则登录会话是一个具有网络凭据的交互式登录会话。
b. 在用户管理器和 Internet 服务管理器中均设置帐户的凭据。重要信息:如果您模拟匿名帐户(例如,IUSR_MACHINE),则必须禁止该帐户访问资源(使用进行适当配置的 ACL)。对于应用程序需要访问的资源,必须(至少)给匿名帐户授予读取访问权限。应拒绝匿名帐户访问所有其他的资源。
2. 配置模拟。默认情况下,ASP.NET 应用程序不使用模拟。应用程序使用配置的 ASP.NET 进程标识(通常为 ASPNET)运行,并且应用程序执行的所有资源访问都使用此标识。仅在以下情况下需要使用模拟:
- 您使用 Enterprise Services 并且要使用 Enterprise Services (COM+) 角色授权访问服务组件所提供的功能。
- 将 IIS 配置为使用匿名身份验证,而且要使用匿名 Internet 用户帐户进行资源访问。有关此方法的详细信息,请参见本章后面的“访问网络资源”。
- 您需要将已验证用户的安全性上下文传递到下一层(例如数据库)。
- 您已将传统的 ASP 应用程序移植到 ASP.NET,并且需要同样的模拟行为。默认情况下,传统 ASP 模拟调用方。
要配置 ASP.NET 模拟,请在应用程序的 Web.config 中使用下面的 <identity> 元素。
<identity impersonate="true"/>