SPN、Kerberos 和 IIS

SPN、Kerberos 和 IIS

我有一个 MyWebServer 的 dns 别名,它指向运行 iis 7.5 的 win 2008 r2 机器的 ip。我为域用户设置了正确的 HTTP spn,该用户有权使用 kerberos 委托给指定的 HTTP web 服务。IIS
在顶层配置为使用内核模式身份验证并使用 AppPoolCredentials。

iis 框上的主要应用程序以我的域用户身份在应用程序池下运行。该应用程序按预期运行,发出了正确的 kerberos 票证,并且该应用程序能够完美地委派 Windows 用户身份。

但是,还有其他应用程序使用相同的 IIS 网站,但使用作为网络服务运行的不同应用程序池。所有应用程序都设置为仅使用 Windows 身份验证(匿名已关闭)。

每当我在 IE 中打开这些应用程序之一时,系统都会提示我登录。输入正确的域凭据后,3 次登录尝试后会出现 401 错误。IE 会将 Web 服务器识别为位于本地 Intranet 区域,并且 IE 已配置为自动登录此区域中的服务器。当我打开这些应用程序时,系统还会向我发出有效的 Kerberos 票证,尽管它们本身永远不需要该票证。

现在,当我将应用程序池标识设置为其他应用程序的域用户并执行 IISreset 时...应用程序按预期工作。

现在,我的问题是...这是预期/预期的吗?
我是否无法在已设置 SPN 的 IIS 网站中运行混合应用程序?使用域用户帐户? 我以前曾使用 HTTP/别名计算机 spn 混合运行过类似这样的网站,但到目前为止,一直在努力解决 HTTP/别名域/用户设置问题。


编辑:Brent 的回答是正确的。我找到了这篇 Microsoft 文章,其中略作阐述。 http://support.microsoft.com/kb/871179

服务的 SPN 只能与一个帐户关联。因此,如果您使用此建议的解决方案,则在其他域用户帐户下运行的任何其他应用程序池都不能仅与集成 Windows 身份验证一起使用。


如果您有多个在不同的域用户帐户下运行的应用程序池,要解决此行为,如果您只想使用集成 Windows 身份验证,则必须强制 IIS 使用 NTLM 作为您的身份验证机制。

答案1

听起来是对的,网络服务帐户没有权限访问您的域,因此无法进行身份验证...至少这听起来像它正在做的事情。

一旦您弹出域凭据,应用程序池现在在对 AD 进行调用时就拥有用户的权限,在这种情况下最终需要进行身份验证。

相关内容