mai*_*aik 5 internet-explorer-8 iis-6 integrated-authentication
我为我的组织开发了几个使用集成身份验证的内部站点。最终,我们希望使用加入域的计算机的用户可以从外部访问这些站点。这些站点在内部网络上的域计算机上按预期工作。当我将笔记本电脑带回家并尝试访问这些网站时,问题就出现了。
IIS 只为这两个站点启用了集成身份验证。当我使用 IE8 浏览网站时,我收到一个用户名/密码提示,要求提供域凭据。我可以把它们放进去,它会起作用,但目标是使用缓存的令牌进行集成身份验证。
接下来,我推断 IE 不会响应集成的身份验证请求(NTLM 是正确的术语吗?)除非该站点受信任。我尝试将该站点添加到受信任站点,但出现与之前相同的行为。然后我将该站点添加到本地 Intranet 站点,这就是事情变得奇怪的地方。我从 IE 得到一个通用错误页面,没有错误代码或任何东西。
只是为了好玩,我加载了 Firefox(我之前设置为使用集成身份验证)并将这个新站点添加到network.automatic-ntlm-auth.trusted-uris。令我惊讶的是,我能够毫无问题地加载页面并准确地看到了我的期望(包括验证集成身份验证是否有效)。
此刻我的思绪有点混乱,因为我真的不确定从这里往哪里去。我希望你们中的一些人能够提供一些见解。
2010 年 5 月 11 日更新 我按照下面的建议使用了 Fiddler,发现 Firefox 和 IE 处理页面请求的方式存在一些差异。当我测试 Internet Explorer 时,它发出一个请求,遇到 401.2(服务器配置错误)并死机。发生这种情况时没有安全日志条目。Firefox 最初遇到同样的错误,但随后发送另一个请求并且身份验证成功。
请记住,最初的测试都是从网络外部进行的,我在内部完成时查看了 IE8 的成功身份验证,它在内部和外部的行为似乎与 Firefox 相同。初始请求以 401.2 满足,然后发送另一个请求并以 401.1(挑战?)满足,然后是 200(成功)。
所以问题似乎是,当从网络外部访问“内部网”站点时,IE8 遇到 401.2,然后在它应该(通过其他浏览器的衡量)继续进行身份验证过程时死亡。
有人可以验证我描述的 Fiddler 活动吗?
对我来说,它看起来像是您成为 IE8 中“错误”的受害者,正如在此处向 Microsoft 报告并在此处进行了更详细的讨论。
我怀疑如果您使用AdsUtil.vbs
脚本将受影响目录上的身份验证设置为“NTLM”而不是默认的“Negotiate,NTLM”,问题可能会消失。
您可以通过使用 Wireshark(或您最喜欢的嗅探器)监视客户端计算机并观察它是否在尝试访问站点时尝试为域控制器执行 NetBIOS 广播名称解析来验证您是否看到此行为。
有关我所采用的 NTAuthenticationProviders 值的一些背景信息可从 Microsoft KB215383 获得。对于 IIS6,如果未定义该值,则 IIS 将其视为“协商,NTLM”。我的猜测是您在默认设置下运行。
您可以使用adsutil.vbs
脚本(默认情况下安装在 %SystemDrive%\Inetpub\AdminScripts 中)检查此值。使用以下命令检查机器上第一个网站的值(显然,更改此示例中的路径以适合您的实际应用程序):
cscript adsutil.vbs GET W3SVC/1/Root/NTAuthenticationProviders
Run Code Online (Sandbox Code Playgroud)
请记住——如果未定义该值,则 IIS6 将使用其编译的默认设置“协商,NTLM”。
要更改机器上第一个网站的根目录的 NTAuthenticationProviders 值,请使用以下命令:
cscript adsutil.vbs SET W3SVC/1/Root/NTAuthenticationProviders "NTLM"
Run Code Online (Sandbox Code Playgroud)
Microsoft 建议通过在设置后再次查询来验证值“took”。