ADFS v2.0错误:MSIS7042:同一个客户端浏览器会话在最后'1'秒内发出'6'请求

伙计们,   我有一个ASP.NET MVC应用程序,我试图使用ADFS v2.0(日内瓦)的Release Candidate版本来保护。我已将应用程序配置为依赖方信任,并且我已使用Fedutil.exe修改应用程序的Web.config,以便它具有有关Geneva服务器的信息并使用Geneva服务器作为其声明源。 然而,当我尝试点击MVC应用程序时,它会重定向到日内瓦,然后(在警告我有关自签名证书之后)再次将我重新引导到MVC应用程序。在接受两个自签名证书警告后,两个服务器在无限重定向循环中互相打乒乓,直到最后日内瓦发出以下消息: 同一个客户端浏览器会话在最后'1'秒内发出'6'请求。可能存在可能的错误配置。请联系您的管理员了解详情 除了包含上述消息的事件之外,MVC端或日内瓦的事件日志中没有错误。如果有人能给我一些关于如何尝试和调试,诊断并希望解决这个问题的信息,我将永远感激不尽。 同样,日内瓦盒子是ADFS v2.0候选版本,ASP.NET MVC站点是使用最新的(09年末)版本的Windows Identity Foundation SDK构建的,其中使用来自WIF SDK的FedUtil.exe修改了Web.config 。 所以你们都会得到这个...我从Firefox尝试了同样的应用程序...... IT工作。我收到提示输入我的域凭据,ADFS v2服务器重新指示我ONCE然后我最终在我的应用程序的主页上,完成我的帐户名称和个性化问候语。 所以现在真正的问题是:为什么IE8会陷入无限重定向循环并且Firefox不是? 经过进一步测试,我已经能够开箱即用,无需修改ADFS v2(RC)或BOTH Safari和Firefox上的WIF(RTW)中的任何默认管道内容。 IE8是唯一一个在处理此身份验证方案时遇到任何问题的浏览器。我已经尝试了一切,包括安装和信任自签名证书,将站点添加到我的本地Intranet区域,并将安全性降低到低,甚至设置第一个和第三方cookie始终允许。     
已邀请:
我在ADFS 1.0上遇到了同样的问题 为了解决这个问题,我确保URL有一个尾随斜杠“/”,它总是可以在FireFox以及IE中使用 例如:https://somedomain.com/Application_2/     
事实证明,依赖方的主机名中有一个下划线(khoffman_2)。显然,下划线是非法的DNS字符,只有IE会拒绝其中带有下划线的信息。 我将我的机器从khoffman_2重命名为khoffman2,ADFS v2 / MVC依赖方组合在Firefox,Safari和IE上完美运行。     
虽然这不是您的问题,但我们遇到的问题与您所描述的完全相同。我们的解决方案是: 在IIS中启用基本身份验证(这解决了一切,但接下来的两个步骤是必需的) 在IIS中禁用Windows身份验证(这解决了某些IE浏览器的问题,但不是全部) 在IIS中禁用匿名访问(这解决了其余IE浏览器的问题)     
Jaxidian的答案很接近。 在我的情况下,我只需要: Windows身份验证 - >已禁用 匿名身份验证 - >已启用 ASP.NET模拟 - >已禁用 表单身份验证 - >已禁用 Windows身份验证 - >已禁用     
当用户未被授权访问页面时,可能会发生此循环。 我们的MVC控制器上有一个自定义授权属性,如果配置文件中的UseADFS设置为true,则会根据提供的声明检查用户是否处于角色中。我认为这个设置设置为true,并且在访问页面时我一直得到adfs循环感到困惑,因为我在被授权访问页面的组中。 排除故障的关键是制作一个显示我的adfs声明的网页,而不需要进行身份验证。
@if (User.Identity.IsAuthenticated)
{
    <div>UserName: @User.Identity.Name;</div>

    var claimsIdentity = User.Identity as System.Security.Claims.ClaimsIdentity;
    <table>
        @foreach (var claim in claimsIdentity.Claims)
        {
        <tr><td>@claim.Type</td><td>@claim.Value</td></tr>
        }
    </table>


}
我注意到我正在登录ADFS,我的声明已经设置好,所以ADFS正在运行。实际问题是我的配置文件有UserADFS =“true”而不是UseADFS =“true”,这基本上导致我的自定义授权代码在授权时返回false。因此,页面会将我转发回adfs以再次进行身份验证。 无论如何,如果用户没有正确的声明来访问该页面,那么也可以发生此adfs登录循环。 此外,如果您编写了自定义授权属性,请务必查看以下链接,该链接介绍了如何防止循环。 使用ADFS声明重定向循环.Net MVC Authorize属性 来自该链接的AuthorizeAttribute的Custom HandleUnauthorizedRequest处理程序代码:
 protected override void HandleUnauthorizedRequest System.Web.Mvc.AuthorizationContext filterContext)
    {
        if (filterContext.HttpContext.Request.IsAuthenticated)
        {
            //One Strategy:
            //filterContext.Result = new System.Web.Mvc.HttpStatusCodeResult((int)System.Net.HttpStatusCode.Forbidden);

            //Another Strategy:
            filterContext.Result = new RedirectToRouteResult(
                new RouteValueDictionary(
                    new
                    {
                        controller = "u",
                        action = "LoginStatus",
                        errorMessage = "Error occurred during authorization or you do not have sufficient priviliges to view this page."
                    })
                );
        }
        else
        {
            base.HandleUnauthorizedRequest(filterContext);
        }
    }
    

要回复问题请先登录注册