![使用 Exchange WebDAV/Outlook Web Access 进行身份验证](https://linux22.com/image/506276/%E4%BD%BF%E7%94%A8%20Exchange%20WebDAV%2FOutlook%20Web%20Access%20%E8%BF%9B%E8%A1%8C%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81.png)
我无法从 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 和 FQDN URL 添加到“内部网”区域则不行。URL 现在显示为“本地内部网”,但我仍然收到基本身份验证提示和 401 错误。
如果我进入客户端 IE 设置,在“高级..安全”下,如果我禁用“启用集成 Windows 身份验证”一切正常(如果在 Intranet 区域)。我不必在 IIS_Box 上关闭此设置!
但是,它只能在 IE 中正常运行,无法在使用 WebDAV 接口的代码中正常运行 - 我尝试在 Visual Studio 中运行/调试,并将其作为编译/独立的可执行文件运行/调试。啊!
编辑2:
后 一些 挖掘,看来“启用集成 Windows 身份验证”实际上启用了 Kerberos 和 NTLM 之间的协商(至少在 IE7 中)。
禁用时,使用 NTLM。
启用时,将协商 Kerberos 或 NTLM。如果不支持 Kerberos,则使用 NTLM。如果支持但失败了,NTLM 是不是用过的。
因此,我要看看我们是否存在潜在的 Kerberos 问题......
答案1
什么网络浏览器?我知道在 IE 上,关于什么是“内部网”以及因此允许向网络服务器发送 NTLM 身份验证的内容的规则非常复杂。
基本上,我怀疑客户端浏览器配置,特别是如果浏览器是 IE。浏览器必须相信 URL 是经过验证的“内部网”,才能发送 NTLM 凭据;如果它认为 URL 是不是内联网,它甚至不会尝试发送 NTLM 身份验证。
答案2
事实证明我遇到了两个问题。
该网站未被识别为“内部网站点”,因此可能根本没有尝试进行 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
我发布此解决方案是为了防止其他人遇到类似问题并发现此问题。(我很讨厌发现很多人遇到与我相同的问题,但却无法找到他们如何解决它。)