我有一个服务器(Windows 2003/IIS 6)。该服务器在 IIS 中有几个不同的“网站”设置。每个站点都在 IIS 中配置有不同的主机标头(端口 80)。此外,每个站点也可以通过指定的端口号访问(没有主机头)。
例如:
MySite1: http ://apps.mysite1.com 或 http://myserver:xxxx
MySite2: http ://something.mysite2.com 或 http://myserver:yyyy
我已经编辑了我的主机文件(它是一台开发机器)以将每个站点的主机头重定向到本地机器(127.0.0.1)。
我在一个 IIS 站点 (mysite1) 中有一个 ASP.NET 2.0 网站,在另一个 IIS 站点 (mysite2) 中有一个 ASP.NET 2.0 Web 服务。该网站使用类似于以下的代码与 Web 服务进行通信:
MyWebService svc = new MyWebService();
//also have tried "http://myserver:yyyy/MyWebService.asmx" below
svc.Url = "http://something.mysite2.com/MyWebService.asmx";
svc.Credentials = System.Net.CredentialCache.DefaultCredentials;
svc.MyMethod();
所有站点都针对 Windows 集成安全性进行了配置,并且 ASP.NET 配置为使用 <identity impersonate="true" /> 进行 Windows 身份验证。安全模型规定,登录到 Web 应用程序的用户应该一直通过 Web 服务进行身份验证(然后再到底层数据库,但这并不一定相关)。
我的工作正常,但是我重建了我的 Web 服务(新方法),现在任何以 401 Unauthorized 消息结尾的 Web 服务调用的结果都无法正常工作。
这听起来确实像一个双跳问题。我认为这与 Web 服务不接受正在传递的凭据以及对要传递的新凭据的挑战有关。只是不确定如何确认这一点。不知道为什么它会挑战 - 我以机器/域管理员身份登录,并且 IE 配置为在 Internet 选项 > 安全选项卡 > 自定义级别 > Intranet 区域中的自动登录中传递凭据。是的,相关站点已添加到我的“Intranet 区域”中。
解决此问题的最佳方法是什么?关于现在可能导致这种情况的任何想法?
蒂亚!