asp.net web.config 模拟与应用程序池标识
Posted
技术标签:
【中文标题】asp.net web.config 模拟与应用程序池标识【英文标题】:asp.net web.config impersonation vs application pool identity 【发布时间】:2012-01-05 15:48:29 【问题描述】:如果我在 web.config 中模拟用户,但应用程序在使用另一个身份的应用程序池下运行,那么当您访问服务器上的资源(例如文件)时将使用哪个身份?
另一个问题,您可以在与应用程序的其余部分不同的身份下运行页面吗?
【问题讨论】:
我们谈论的是 IIS5、6 还是 7? 【参考方案1】:当您访问服务器上的资源时,用户将是模拟配置中指定的用户,而不是应用程序池中指定的用户
为特定身份启用模拟。在这种情况下,ASP.NET 模拟使用 Web.config 文件中指定的身份生成的令牌。
<identity impersonate="true"
userName="domain\user"
password="password" />
已启用模拟。在这种情况下,ASP.NET 会模拟 IIS 传递给它的令牌,该令牌可以是经过身份验证的用户,也可以是匿名 Internet 用户帐户。
<identity impersonate="true" />
来源:MSDN
如果您有兴趣,here 您有一篇文章,其中包含适用于不同模拟场景的身份矩阵。
是的,您可以像 Alex Dn 所说的那样以编程方式模拟
【讨论】:
那么如果在应用程序池下运行的每个应用程序都在冒充特定用户,那么应用程序池身份就没有意义了? @user1110437:是的,对于访问“外部”资源,应用程序池用户不相关(当 impersonate = true 时)。 当您说外部时,您是指在应用程序或服务器之外?【参考方案2】:1) 在 web.config 中。
2) 您可以在后面的代码中进行模拟: http://support.microsoft.com/kb/306158
或Another article
【讨论】:
那么如果我在web.config中冒充,那么应用池身份就没有意义了? 不完全是,实际上 web.config 覆盖了应用程序池标识。一个应用程序池可用于多个站点。使用 web.config,您可以指定每个站点的身份。所以使用 AppPool 身份就可以了,但通常建议使用 web.config。以上是关于asp.net web.config 模拟与应用程序池标识的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET web.config:configSource 与文件属性