我正在使用 WAFFLE 将 Web 服务器与 Windows 身份验证集成。
当我使用短主机名访问 Web 服务器时,Chrome 和 IE 都认为该服务器“受信任”,并且一切正常。
当我使用完整的主机名访问完全相同的 Web 服务器时,该服务器不再被认为是“受信任的”(这是废话,老实说,因为 IP 地址没有改变)并且无论浏览器如何,都会提示我密码(这很好,服务器不受信任。)
问题是即使我提供了正确的密码,它也不会让我登录。相反,我一遍又一遍地得到相同的密码对话框。
如果我从 Mac 上的浏览器访问,我会看到一个登录对话框,并在其中输入我的密码会成功登录。
两者的区别在于,在 Windows 上,浏览器发送 Authorization: Negotiate,而在 Mac OS X 上,他们发送 Authorization: Basic。
我在网上看到的完整标题:
Authorization: Negotiate TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw==
这解码为“NTLMSSP\0....二进制数据....”
二进制数据不够大,无法包含我的凭据或其哈希,因此我被引导相信浏览器要求我输入密码,然后将其丢弃,而不是使用它来验证我的身份。