我有一个奇怪的情况发生,我正在尝试诊断,并希望任何关于在哪里寻找的建议。
我有一个使用WIF的ASP.NET应用程序,它在IIS 7.5中包含另一个ASP.NET应用程序作为子应用程序。此子应用程序包含基于REST的Web服务。通过将URL粘贴到浏览器中直接访问此服务将重定向到ADFS登录页面。这就是我期望它的工作方式。奇怪的是,我有第二个环境,部署了相同的应用程序和服务,在这种环境中,我从未被重定向到登录页面。
我已检查过所有web.config文件是否相同,并检查了我认为可能与之相关的所有IIS设置。浏览第二个环境中的网页需要登录,但不能直接浏览到REST .svc文件。我检查了IIS中的所有HttpModules和Handler Mappings。我还启用了对Microsoft.IdentityModel事件的跟踪,并且在第一个环境中可以看到重定向到STS的基本条目。在第二个环境中,我没有看到任何WIF事件。当我使用IIS失败的事件跟踪检查数据流时,似乎调用了SessionAuthenticationModule,但我不确定它为什么不需要身份验证。
我熟悉与WIF相关的Cookie问题,并确保所有cookieHandler设置都正确无误。我还关闭了浏览器窗口并清除了所有cookie,以确保SessionAuthenticationModule没有看到以前的WIF cookie。
如果你能想到别的我应该检查一下,请告诉我。
答案 0 :(得分:0)
如果在绑定到同一ADFS实例的两个独立环境中有相同的应用程序,则URL必须不同,所以我对“所有web.config文件是相同的”语句感到困惑?
您是否尝试在不起作用的应用程序上重新运行FedUtil?
同时检查AppPool设置。
答案 1 :(得分:0)
经过大量的试验和错误并仔细检查两台服务器之间的applicationHost.config文件,我发现这是由HTTP处理程序的排序差异引起的。 ExtensionlessUrl-Integrated-4.0处理程序在一台服务器上获取请求并重定向到ADFS。在另一台服务器上,svc-Integrated-4.0处理程序首先响应请求。您可以在此处详细了解此行为:http://support.microsoft.com/kb/2520479