假设网站布局如下
- www.contoso.com - 作为 CONTOSO\sitePool 运行
- www.contoso.com/subSite1 - 作为 CONTOSO\subPool1 运行
- www.contoso.com/subSite2 - 作为 CONTOSO\subPool2 运行
这些页面应该使用 Kerberos 进行身份验证 - 因此我分配了 SPNHTTP/www.contoso.com到CONTOSO\sitePool,它非常适合 www.contoso.com 网站。
现在我想对子站点 1 和子站点 2 也使用 Kerberos。
我无法将 SPN 分配给池,因为它已经分配。
我也无法以以下形式分配 SPNHTTP/www.contoso.com/subSiteX,因为浏览器不知道这一点(它们仅使用域名来计算所需的 SPN)。
那么如何在子站点中使用 Kerberos 身份验证?
答案1
简而言之,您不能对具有不同委派主体的子站点使用 Kerberos。
Kerberos SPN 除了 [service]/[name]:[port/service] 之外没有其他规定。
您的选择是:
- 在不同的端口运行子站点,并为每个具有不同端口的服务用户创建具有委派的 SPN。
- 使用 NTLM
- 对所有子网站使用相同的应用程序池帐户
答案2
这篇文章/博客文章可能适用。
表示使用negotiate就会自动使用kerberos。
这是一个禁用 NTLM 的 cmd appcmd.exe set config "mysite" -section:system.webServer/security/authentication/windowsAuthentication /-"providers.[value='NTLM']" /commit:apphost
/-“providers.[value='NTLM']”是要删除的。如果您想添加身份验证提供程序,您可以这样做。
appcmd.exe 设置配置“mysite”-section:system.webServer/security/authentication/windowsAuthentication/+“providers。[value='NTLM']”/commit:apphost
您只需将提供商前面的 - 更改为 + 即可。
这只是来自 IIS.com 的一篇有关 Windows 身份验证提供程序的好文章。
http://www.iis.net/configreference/system.webserver/security/authentication/windowsauthentication/providers
祝你好运,希望这对你有帮助