浏览器发送NTLM票证而不是Kerberos票证

时间:2014-02-19 14:43:00

标签: apache active-directory single-sign-on kerberos ntlm

我遇到的问题让我疯了。我试图在Windows服务器2012的组合上作为活动目录服务器,ubuntu 12.04与apache作为网络服务器和Windows 7笔记本电脑作为客户端(所有3在同一本地网络上)的单一登录。我想我已经把一切都搞定了:

  • 我在AD服务器上创建了一个keytab文件,当在web服务器上使用kinit命令时,我没有收到任何错误,我可以确认之后使用klist收到了kerberos票证。

  • 我已经在网络服务器上的krb5.conf文件中设置了AD-realm,因为kinit工作,我认为这是正确完成的。

  • 我正在测试的受保护目录在apache2.conf中设置如下:
    AuthType Kerberos
    KrbMethod谈判上 KrbMethodK5Passwd On KrbAuthRealms ADREALM.LOCAL
    Krb5KeyTab /etc/apache2/test.keytab
    KrbServiceName NameOfSPNInKeyTabFile
    需要有效用户

  • 笔记本电脑已添加到AD服务器,登录后,执行klist时会列出3个KerbTickets。

  • 我已将网络服务器的IP地址添加到IE 11中的可信站点列表(http和https)。

但是,当我尝试访问网络服务器上的受保护网站时,我不断收到一个要求登录和密码的信箱。当我输入这些内容时,我会通过身份验证并访问该网站。

使用WireShark我可以说客户端在被要求进行身份验证时首先发送一个NTLM票证。由于网络服务器需要一个kerberos票据,这会失败并且浏览器会回退到要求登录和密码的简单身份验证。收到这些文件后,网络服务器会联系AD服务器并验证凭据。因此,身份验证可以正常运行 - 它只是单点登录失败。

所以最大的问题是:为什么浏览器会在这种情况下发送NTLM票?我用firefox和chrome测试了这个,他们都返回了NTLM票。我尝试了不同的SPN名称组合,但都具有相同的结果。是否有一些我错过的命名约定或者还有什么可能是错的?

2 个答案:

答案 0 :(得分:2)

我发现DNS是问题所在。我将网络服务器添加到AD服务器上的DNS,然后在从笔记本电脑打开页面时传输了kerberos票证。

答案 1 :(得分:0)

我已经完成了这项工作,但我们的AD管理员合作。他们从来没有真正清楚AD方面需要什么黑魔法,但需要某种“域信任”。这种信任是允许Web客户端发送 首先是GSSAPI凭证。我们用了几个星期来搞清楚这一点。

我们的配置和你的配置之间的一个区别是

KrbMethodK5Passwd Off

您还应该知道,对于AD结构之外的Windows客户端,几乎不可能实现此功能。如果他们有一个外部IP地址,我使用mod_rewrite将它们引导到基于表单的登录。类似的重定向用于初始GSSAPI版本失败的客户端。

您可能会在此网页上找到一些其他提示。

https://weblogin.stanford.edu/config.html