IIS7 中的身份池

Posted

技术标签:

【中文标题】IIS7 中的身份池【英文标题】:Identity pool in IIS7 【发布时间】:2010-08-16 03:19:30 【问题描述】:

我有一个托管在 IIS7 中的 Web 应用程序,并且我已将 appPool 设置为以管理员身份运行。现在,如果用户登录(表单身份验证),IIS 将使用管理员帐户(在 appPool 中)访问数据库,但是如果用户未登录,则 IIS 将使用导致错误的“NT AUTHORITY\IUSR”帐户: 用户“NT AUTHORITY\IUSR”登录失败。

谁能解释一下为什么在用户没有登录时它没有使用管理员帐户?

【问题讨论】:

【参考方案1】:

我无法验证你所说的是否正确,但我可以告诉你应该怎么做。

1) AppPool 用户应该拥有尽可能少的权限,当然不是管理员权限。除非您真的知道自己在做什么,否则最好将 AppPool 用户留给默认的 NETWORK SERVICE。

2) 您应该在您的数据库上创建一个用户,再次使用最少需要的权限,并在您的 web.config 的 ConnectionString 中使用该用户。

【讨论】:

是的...这仅用于测试..在发布阶段将为appPool创建一个具有有限权限的专用Windows帐户..现在的问题是IIS在什么情况下使用appPool身份而不是(使用'NT AUTHORITY\IUSR')? 据我所知,AppPool 用户运行您应用程序的所有工作进程。登录与否。我认为您需要寻找其他地方。您是否在 web.config 中使用模拟? 我会这么认为.. 但我已经运行了 sql profiler。第一次访问应用程序时(没有用户验证),它使用“NT AUTHORITY\IUSR”帐户,当用户登录时,它使用应用程序池中的身份..

以上是关于IIS7 中的身份池的主要内容,如果未能解决你的问题,请参考以下文章

两阶段身份验证 IIS7

IIS7上搭建网站的基本方法(系统推荐的安全方案)

神秘的ApplicationPoolIdentity再也不用妈妈担心程序池安全了

IIS 7.5 即使在禁用时也使用模拟

使用 IIS 7.5 进行表单身份验证 - 未授权

在IIS7中通过PHP连接到SQL SERVER 2008(使用Windows身份验证)?