- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
(这是一个关于模糊问题的问题。我尝试提供所有相关数据,希望有人提供有用的信息;对冗长的描述表示歉意。)
我们的网络应用程序
我们有一个在 IIS 7.5 中运行的 .NET 4 Web 应用程序,用于访问 Active Directory 和 SQL Server 数据库。
通过将应用程序的应用程序池的标识设置为 ApplicationPoolIdentity ,此 Web 应用程序在虚拟“应用程序池标识”下运行。虚拟身份的简明描述可以在 a StackOverflow answer 及其所引用的博客文章中找到:应用程序池身份只是添加到作为“网络服务”运行的 Web 应用程序的工作进程的附加组。但是,one source 含糊地暗示“网络服务和 ApplicationPoolIdentity 确实存在 IIS.net 站点文档未发布的差异”。因此,虚拟身份可能不仅仅是一个附加组。
我们选择使用 ApplicationPoolIdentity,而不是 NetworkService,因为它成为 IIS 7.5 中的默认值(参见,例如 here ),并且根据 Microsoft 的建议:“此身份允许管理员指定仅与应用程序使用的身份有关的权限池正在运行,从而提高了服务器的安全性。” (来自 processModel Element for add for applicationPools [IIS 7 Settings Schema] )“应用程序池标识是一种强大的新隔离功能”,它“使运行的 IIS 应用程序更加安全可靠。”(来自 IIS.net article "Application Pool Identities" )
该应用程序使用集成 Windows 身份验证,但使用 <identity impersonate="false"/>
,因此不是使用最终用户的身份而是使用虚拟应用程序池身份来运行我们的代码。
此应用程序使用 System.DirectoryServices 类(即 ADSI API)查询 Active Directory。在大多数地方,无需指定额外的用户名/密码或其他凭据即可完成此操作。
此应用程序还使用连接字符串中的 Integrated Security=true
连接到 SQL Server 数据库。如果数据库是本地的,那么我们看到IIS APPPOOL\OurAppPoolName
是用来连接数据库的;如果数据库是远程的,则使用机器帐户 OURDOMAIN\ourwebserver$
。
我们的问题
我们经常遇到问题,其中工作安装开始以以下方式之一失败。
OURDOMAIN\ourwebserver$
,而是尝试匿名访问。 (我们有轶事证据表明此问题在 UAC 关闭时发生,并且在打开 UAC 后消失。但请注意,更改 UAC 需要重新启动...) IIS.net thread "use ApplicationPoolIdentity to connect to SQL" 中报告了类似的问题,特别是在 one reply 中。 NT AUTHORITY\ANONYMOUS LOGON
访问,以及 AD 错误 0x8000500C 和“指定的目录服务属性或值不存在”。
最佳答案
通过 Microsoft 支持,我发现我们遇到了 Microsoft Knowledge Base article KB2545850 中描述的问题。 .这仅在使用 ApplicationPoolIdentity 时发生。它很容易发生,即在更改机器帐户密码后(默认情况下每 30 天自动发生一次),然后重新启动 IIS(例如,通过 iisreset
)。请注意,根据 Microsoft 和我们的观察,重新启动后问题就会消失。
根据 Microsoft 的说法,无法检查您的 Windows/IIS 是否已进入此状态。
Microsoft 在此知识库文章中附加了一个修补程序。没有任何迹象表明该修补程序何时会进入正式交付状态,并且该修补程序已经有 10 个月的历史了。在我们的具体案例中,我们决定改用 NetworkService。
关于asp.net - 使用应用程序池标识的 IIS 应用程序丢失主 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9686186/
我是一名优秀的程序员,十分优秀!