我们有一个内部网站,即xxx.yyyy.com,用户通过input“http”://xxx.yyy.com访问。
当我们迁移到在新的2003服务器上运行的IIS 7时,我们的问题就开始了。 我们摆脱了单点login代码,并实现了一个安全模型,在该模型中捕获用户的域凭证,然后对用户数据库进行身份validation。
为了获得传递给我们的ASP.NET应用程序的域凭据,我们有以下设置:
匿名身份validation:禁用ASP.NET模拟:启用基本/摘要/窗体身份validation:已禁用Windows身份validation:已启用
我们允许“*”否认“?” 在web.config中。
从任何客户端PC上浏览“http”://xxx.yyy.com会导致一个域名login提示,如果你input一个合适的用户/密码,你可以进入。
但是,在远程login到服务器时浏览“http”://xxx.yyy.com将导致3个域login提示,并最终出现401错误 – 未经授权。
我们已经将这种行为追溯到我们的网站有问题,我们有网页做“屏幕抓取”使用HttpRequest在同一台服务器上调用一个url。
当从任何其他客户端执行HttpRequest时,使用通过授权凭证的testing工具,一切都很好。 因此,服务器上的内部HttpRequest调用失败,就像尝试从远程会话中浏览该服务器的URL一样。
为什么要在服务器xxx.yyy.com上的“http”://xxx.yyy.comvalidation失败?
请参阅此Microsoft支持文章:
用户在安装Windows Server 2003 Service Pack 1后访问IIS 6.0中的网页或查询Microsoft SQL Server 2000时遇到身份validation问题
症状:
您将运行Microsoft Internet信息服务(IIS)6.0或Microsoft SQL Server 2000的基于Microsoft Windows Server 2003的计算机升级到Windows Server 2003 Service Pack 1(SP1)。
完成此操作后,用户在使用Web应用程序或使用查询数据库的程序时会遇到身份validation问题。 例如,用户可能会遇到类似于以下之一的症状:
当用户尝试访问从后端数据库检索数据的网页时,用户会收到“访问被拒绝”错误消息。
用户无法连接到位于networking负载平衡(NLB)群集中的另一个数据库服务器。 对数据库服务器的查询失败。 用户遇到的症状可能因您的特定环境而异。