想象一个网站,它实时显示远程注册表项的值,例如远程 PC 上的防病毒定义版本。需要明确的是,涉及 3 台计算机,Web 服务器充当中间人。
该网站使用 Windows 身份验证,因此通过 Windows 上的浏览器,您的 AD 凭据将通过并且 IIS 对用户进行身份验证(在 ASP.NET 中,用户令牌已附加并且可以通过编程方式检查)。
我们在具有内核模式身份验证的 IIS 7.5 上运行,SPN 是否需要在 AD 中设置以允许 Windows 身份验证的 Kerberos 部分发生?
该站点在 AD 帐户DOMAIN\AV1下的应用程序池下运行,该帐户是对 LAN 上的计算机具有权限的组的成员。
站点中的代码不执行模拟,因为它不想假定站点用户(没有远程注册权限)的 ID,所以它只是进行远程注册表调用。
Web 服务器计算机帐户或DOMAIN\AV1 帐户是否需要 SPN 来协商并执行对远程计算机的 Kerberos 身份验证?
是的,您不能在没有 SPN 的情况下在 Kerberos 中进行身份验证。为机器帐户设置 SPN 的清单如下:
http://blogs.msdn.com/b/webtopics/archive/2009/01/19/service-principal-name-spn-checklist-for-kerberos-authentication-with-iis-7-0.aspx
如果它只是一个网络服务器,标准的两个 SPN 的机器帐户。如果是网络场,您可能希望选择域帐户并确保该帐户具有所需的 SPN。
当您声明“站点中的代码不执行模拟”时,您需要记住,如果 IIS 计算机帐户不执行对远程系统的访问,则需要委派它代表其他人进行身份验证的能力DOMAIN\AV1 帐户等帐户。如果您使用无约束委派,则配置很简单。
您可能希望使用 DelegConfig 工具进行测试,您可以将其放到网站上并为其配置应用程序文件夹。它提供了一个简单的 GUI,可以为您执行必要的检查。
http://blogs.iis.net/brian-murphy-booth/archive/2007/03/09/delegconfig-delegation-configuration-reporting-tool.aspx
http://blogs.iis.net/brian-murphy-booth/archive/2007/03/09/the-biggest-mistake-serviceprincipalname-s.aspx