无法使用不同的服务器名称进行授权

时间:2009-02-09 02:21:29

标签: asp.net web-services iis authorization azman

我在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身份验证。

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:1)

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

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