使用 IIS Farm 和子应用程序进行 Windows 集成身份验证

使用 IIS Farm 和子应用程序进行 Windows 集成身份验证

假设网站布局如下

  1. www.contoso.com - 作为 CONTOSO\sitePool 运行
  2. www.contoso.com/subSite1 - 作为 CONTOSO\subPool1 运行
  3. www.contoso.com/subSite2 - 作为 CONTOSO\subPool2 运行

这些页面应该使用 Kerberos 进行身份验证 - 因此我分配了 SPNHTTP/www.contoso.comCONTOSO\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

祝你好运,希望这对你有帮助

相关内容