ASP.NET Web.config模拟与应用程序池身份验证

9

如果我在web.config中模拟用户,但应用程序运行在使用另一个标识的应用程序池下,当您访问服务器上的资源(如文件)时,哪个标识将被使用?

另一个问题,您能否在应用程序的其余部分下运行一个页面以与其他身份分开?


我们是在谈论IIS5、6还是7? - Kev
2个回答

12

当您访问服务器上的资源时,用户将是在模拟配置中指定的用户,而不是应用程序池中的用户。

启用模拟特定身份。在此情况下,ASP.NET会模拟使用Web.config文件中指定的身份生成的令牌。

<identity impersonate="true"
      userName="domain\user" 
      password="password" />

启用模拟身份。在此实例中,ASP.NET模拟IIS传递给它的令牌,该令牌可以是经过身份验证的用户或匿名Internet用户帐户。

 <identity impersonate="true" />

来源: MSDN

如果您感兴趣,这里有一篇文章介绍了不同模拟场景下的身份矩阵。

并且,正如Alex Dn所说,您可以以编程方式进行模拟。


那么,如果在应用程序池下运行的每个应用程序都是模拟特定用户,则应用程序池标识就没有意义了吗? - developer747
@user1110437:是的,对于访问“外部”资源,应用程序池用户并不重要(当impersonate = true时)。 - Claudio Redi
当你说“external”时,你是指应用程序或服务器之外的吗? - developer747

0

那么,如果我在 web.config 中进行模拟身份,那么应用程序池标识就没有意义了吗? - developer747
1
并不完全准确,实际上是web.config覆盖了应用程序池标识。一个应用程序池可以用于多个站点。使用web.config,您可以为每个站点指定标识。因此,使用AppPool标识也可以工作,但通常建议使用web.config。 - Alex Dn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接