众所周知,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 身份验证。
有人对此有什么指点/想法吗?