1

我有一个在 Windows 2003 上的 IIS 6.0 中运行的 Web 服务。它的身份验证模式是集成 Windows 安全性(禁用匿名),并且使用授权管理器和 XML 授权存储完成授权。我的测试用户是具有授权角色成员身份的域用户(实际上是管理员)。

我正在(暂时)在 Web 服务器(localhost)上测试它,并(暂时)使用 Internet Explorer 访问 Web 服务(.asmx)。

我可以通过 localhost 成功打开 Web 服务(wsdl)页面,如下所示:

http://localhost:8080/MyService/MyService.asmx

使用此 url,集成 Windows 身份验证成功(静默),并且 AzMan 成功授权我访问该服务。服务器名称也是如此:

http://myserver:8080/MyService/MyService.asmx

现在我需要使用外部主机名 (www.mysite.no) 来访问服务(这是为了让 ssl 使用颁发给该站点名的证书)。为此,我将主机名添加到我的 HOSTS 文件中,如下所示:

127.0.0.1   www.mysite.no

...然后在 IE 中输入:

http://www.mysite.no:8080/MyService/MyService.asmx

然后发生的是授权失败。我得到了 IE/Windows 登录框并输入了正确的凭据三次。然后我得到一个 401.1:

HTTP Error 401.1 - Unauthorized: Access is denied due to invalid credentials.
Internet Information Services (IIS)

主机名如何影响通过 AzMan 的授权?

编辑:我有理由相信 AzMan 与它无关 - 这似乎是身份验证失败。

我已经在另一台服务器上重现了这个问题。本质似乎是通过本地主机文件中的条目访问 localhost 会以某种方式弄乱浏览器和 IIS 之间的集成 Windows 身份验证。

我已经解决了这个问题,现在只剩下我的好奇心了......

4

2 回答 2

1

我的第一个猜测是它不是主机名。

首先要做的是缩小问题范围,因为有几件事可能会出错。

首先将 IIS 站点设置为匿名访问,并确保您可以启动 Web 服务。这将验证您访问的是正确的 IIS 网站,并且确实缩小了授权问题。

此外,请检查应用程序池凭据以及包含 Web 服务的文件夹上的安全设置,因为这些可能是贡献者。

于 2009-02-09T02:44:31.007 回答
1

启用审核登录失败审核并检查主机上的安全事件日志。
1) 在网络服务器上,转到控制面板、管理工具、本地安全策略。2)转到本地政策,审计政策。为“审核登录事件”添加失败。
3) 关闭 MMC。打开命令提示符并键入 gpupdate。4) 浏览到http://www.mysite.no. 您将再次收到错误消息。5) 启动事件查看器(控制面板、管理工具、事件查看器)。导航到安全事件日志并查找登录失败。他们应该告诉您一些描述性的信息,例如“未授予用户指定的登录类型”。不幸的是,登录类型本身不是描述性的;登录类型 2 是交互式的(本地),3 是“通过网络访问此计算机”,5 是“作为服务登录”(NT 服务,而不是 WCF 服务)。可以在本地安全策略中授予所需的权限。

另外,请检查您是否在 IE 中启用了代理。如果您的流量被路由到代理,则代理可能不支持 NTLM。使用 IE 进行测试时,将主机添加为代理例外。

于 2009-02-09T14:00:12.737 回答