我在从除 IIS 和 Exchange 服务器之外的任何机器访问 Exchange WebDav / OWA 时遇到问题。
我们有一个运行 Windows 2003 的小型开发域。一台服务器(我们将其称为 IIS_box)运行 IIS 和 Exchange 2003。IIS_Box 在/Exchange/
虚拟目录上设置了 Outlook Web Access,权限拒绝匿名用户以及基本身份验证和集成windows 身份验证已启用。
在 IIS_Box 上,访问 http://IIS_Box.ourDomain.net/Exchange/ 会向用户展示 OWA 应用程序,而不会提示输入用户名/密码。但是,转到http://IIS_Box/Exchange/时,用户会看到一个用户名/密码对话框。
如果用户没有输入用户名和密码,他们会收到401.2 Unauthorized: Access denied due to server configuration
错误。如果用户尝试输入用户名和密码,他们会得到一个401.1 Unauthorized: Access is denied due to invalid credentials
.
在任何其他机器上,用户都会看到用户名/密码对话框,并且无论他们使用 FQDN 还是仅使用裸服务器名称,都会收到 401 错误。
任何人都知道问题是什么以及我们如何解决它?
编辑:
继杰夫在下面的回答之后,客户正在使用 IE7。
在 IIS_Box 上,将非 FQDN URL 添加到 IIS_Box 上的“Intranet”区域允许该 URL 工作。极好的!
但是,将普通 URL 和 FQDN URL 添加到其他计算机上的“Intranet”区域不会。URL 现在显示为“本地 Intranet”,但我仍然收到基本身份验证提示和 401 错误。
如果我进入客户端 IE 设置,在 Advanced..Security 下,如果我禁用“启用集成 Windows 身份验证”,则一切正常(如果它位于 Intranet 区域中)。我不必在 IIS_Box 上关闭此设置!
但是,它只能在 IE 中正常工作,而不是在使用 WebDAV 接口的代码中 - 我尝试在 Visual Studio 中运行/调试并作为编译/独立可执行文件。啊!
编辑2:
经过 一番 挖掘,似乎“启用集成 Windows 身份验证”实际上启用了 Kerberos 和 NTLM 之间的协商(至少在 IE7 中)。
禁用它后,将使用 NTLM。
启用它后,将协商 Kerberos 或 NTLM。如果不支持 Kerberos,则使用 NTLM。如果支持但失败,则不使用NTLM 。
因此,我要去看看我们是否存在潜在的 Kerberos 问题......
什么网络浏览器?我知道在 IE 上,关于什么是“内部网”以及允许将 NTLM 身份验证发送到网络服务器的规则是相当拜占庭式的。
基本上,我怀疑客户端浏览器配置,特别是如果浏览器是 IE。浏览器必须相信 URL 是有福的“内部网”才能发送 NTLM 凭据;如果它认为 URL不是Intranet,它甚至不会尝试发送 NTLM 身份验证。
原来我有两个问题。
该网站未被识别为“Intranet 站点”,因此它可能根本没有尝试 Kerberos/NTLM 身份验证。
我们在幕后遇到了 Kerberos 错误。我正在访问 IIS_Box 并且事件日志出现错误,并
KRB_AP_ER_MODIFIED
显示有关host/IIS_Box.ourDomain.net
不匹配的消息HTTP/IIS_Box.ourDomain.net
。第一个问题在 Jeff 的建议下得到解决 - 谢谢。
第二个是通过在域控制器上运行以下命令进行排序的:
setspn -A HTTP/IIS_Box.ourDomain.net IIS_Box
我发布此解决方案以防其他人遇到类似问题并发现此问题。(我讨厌发现很多人和我有同样的问题,但找不到他们是如何解决的。)