为什么通过主机名或 IP 访问 IIS 托管站点时会提示输入 AD 帐户凭据,但通过服务器名访问时则不会提示输入?

为什么通过主机名或 IP 访问 IIS 托管站点时会提示输入 AD 帐户凭据,但通过服务器名访问时则不会提示输入?

我在 Windows 2016 Nano 服务器托管的 IIS 中运行一个 Web 服务。如果我通过http://servername/service/health

http://[IP Address here]/service/health但是,如果我通过或访问它http://service.company.com/service/health,它会提示输入 AD 登录凭据。

我查看了 DNS 记录和 IIS ApplicationHost.config,但我真的不知道它出了什么问题。我可能漏掉了一两个设置。有人能知道在哪里查看或做什么吗?

答案1

这看起来像是一个 Kerberos 问题;如果我是正确的,那么服务器的 AD 计算机帐户(*) 有一个注册的 SPN HTTP/SERVERNAME(可以使用SETSPN命令行工具进行验证),因此当使用计算机名称调用 Web 服务时可以进行自动 Kerberos 身份验证;但是,当使用任何其他名称调用 Web 服务时,这将不起作用。

如果您希望能够使用不同的名称调用 Web 服务,则需要使用如下命令将另一个 SPN 添加到同一个 AD 计算机帐户 (*) SETSPN -S HTTP/service.company.com SERVERNAME

更多信息这里

(*)或者,如果您手动配置了运行 IIS 应用程序池的用户帐户。

答案2

Service.company.com 需要在 IIS 服务器上注册为服务主体名称。

此外,默认情况下,Kerberos 集成身份验证不会与 IP 地址一起使用,除非系统配置为这样做,并且 IP 地址是注册的服务主体名称。

https://docs.microsoft.com/en-us/windows-server/security/kerberos/configuring-kerberos-over-ip

答案3

另一个检查是您的浏览器可能没有传递凭据,从而强制登录提示。

在 Internet 选项中,有一个本地 Intranet 的安全区域;此区域将自动传递您的 Windows 凭据,而无需 AD 对话框。默认设置将检测服务器名称作为网络的一部分,但完整域名可能被视为 Internet 区域并且不会发送凭据。在本地 Intranet 的配置页面中,您可以添加 FQDN 以不再提示(或通过组策略进行设置)。

这一切都假设您希望网站使用 Windows 凭据运行,并且您在内部运行;我不是安全专家,但就我个人而言,我不想将我的凭据自动发送到互联网上的网站。

相关内容