![某些带有 CNAME Web 服务器(主机 A 记录的 SPN)的机器上出现 IE Kerberos 故障](https://linux22.com/image/540462/%E6%9F%90%E4%BA%9B%E5%B8%A6%E6%9C%89%20CNAME%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%88%E4%B8%BB%E6%9C%BA%20A%20%E8%AE%B0%E5%BD%95%E7%9A%84%20SPN%EF%BC%89%E7%9A%84%E6%9C%BA%E5%99%A8%E4%B8%8A%E5%87%BA%E7%8E%B0%20IE%20Kerberos%20%E6%95%85%E9%9A%9C.png)
众所周知,IE 不喜欢针对在 DNS 中注册为 CNAME 的主机执行 Kerberos。IE 会转而使用主机的底层 A 记录来查找服务主体名称 (SPN)。
在测试网络上,我们能够通过为主机的 A 记录注册 SPN 来使 Kerberos 工作,这样当在浏览器中通过其 CNAME 访问 Web 服务器时,Kerberos 身份验证就可以成功进行。当直接访问 URL 中包含 A 记录主机的 Web 服务器时,Kerberos 身份验证可以正常工作,但由于各种我无法控制的原因,希望使用 CNAME。
但在生产网络上,同样的配置失败了,我不知道原因。有什么想法吗?
这是一个使用 SPNEGO 库(而非 IIS)的 Java Web 应用程序。Kerberos 身份验证在测试和生产网络中均正常运行(并且已确认不会故障恢复到 NTLM),但 CNAME 访问仅在测试中有效。
答案1
看起来,一个关键的区别是在测试环境中,CNAME 在与 A 记录相同的域中注册(例如,host.example.com 是 A 记录,而 alias.example.com 是 CNAME)。
在生产环境中,CNAME 指的是用过的但不再是首选域,即 A 记录所在的位置(例如,prodhost.example.com 是 A 记录,prodalias.example.net 是 CNAME)。
据称,example.net DNS 区域(以及 example.com DNS 区域)与 Active Directory 中的 example.com 域相关联,但我们尚未能够确认此配置。当然,Internet Explorer 似乎并不认为它们是相关的,这就是为什么它甚至没有尝试进行 Kerberos 身份验证。
有人对此有什么指点/想法吗?