我有一个在 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 身份验证。
我已经解决了这个问题,现在只剩下我的好奇心了......