ADFS v2.0 错误:微星7042:同一客户端浏览器会话在过去“1”秒内发出了“6”个请求

StackOverflow https://stackoverflow.com/questions/2640030

人 我有一个 ASP.NET MVC 应用程序,我正在尝试使用 ADFS v2.0 的候选发布版本(日内瓦)来保护该应用程序。我已将应用程序配置为依赖方信任,并使用 Fedutil.exe 修改应用程序的 Web.config,以便它具有有关Geneva 服务器的信息并使用Geneva 服务器作为其声明源。

但是,当我尝试点击 MVC 应用程序时,它会重定向到Geneva,然后(在警告我有关自签名证书的信息之后)再次将我重定向到 MVC 应用程序。接受两个自签名证书警告后,两台服务器在无限重定向循环中相互打乒乓球,直到最后Geneva发出以下消息:

同一客户端浏览器会话在过去“1”秒内发出了“6”个请求。可能存在配置错误。请联系您的管理员了解详细信息。

除了包含上述消息的事件之外,MVC 端或Geneva 的事件日志中没有任何错误。如果有人能给我一些关于如何尝试和调试、诊断并希望解决这个问题的信息,我将永远感激不已。

同样,Geneva box 是 ADFS v2.0 候选版本,ASP.NET MVC 站点是使用最新(09 年末)版本的 Windows Identity Foundation SDK 构建的,并使用 WIF SDK 中的 FedUtil.exe 修改了 Web.config 。


所以你们都会从中得到乐趣......我在 Firefox 中尝试了同样的应用程序......有用。系统会提示我输入域凭据,ADFS v2 服务器会重定向我一次,然后我最终会进入应用程序的主页,并显示我的帐户名和个性化问候语。所以现在真正的问题是:为什么 IE8 会陷入无限重定向循环而 Firefox 却不会?经过进一步的测试,我已经能够让这个场景开箱即用,无需修改 Safari 和 Firefox 上 ADFS v2 (RC) 或 WIF (RTW) 的任何默认管道内容。IE8 是唯一在处理此身份验证场景时出现任何问题的浏览器。我已经尝试了一切,包括安装和信任自签名证书、将站点添加到我的本地 Intranet 区域、将安全性降低到较低水平,甚至将第一方和第三方 cookie 设置为始终允许。

有帮助吗?

解决方案 2

原来,依赖方的主机名在它(khoffman_2)有下划线。显然,下划线是非法DNS字符和ONLY IE将拒绝在它下划线的信息。

我改名为我的机器从khoffman_2到khoffman2和ADFS V2 / MVC依赖方组合完美的作品在Firefox,Safari和IE浏览器。

其他提示

我有同样的问题与ADFS 1.0 并解决它,我确信,网址有一个尾随斜杠“/”,将始终在Firefox以及IE工作

例如: https://somedomain.com/Application_2/

虽然这不是您的问题,但我们遇到了与您所描述的相同的问题。我们的解决方案是:

  1. 在 IIS 中启用基本身份验证(这没有解决任何问题,但在接下来的 2 个步骤中是必需的)
  2. 在 IIS 中禁用 Windows 身份验证(这解决了某些 IE 浏览器的问题,但不是全部)
  3. 禁用 IIS 中的匿名访问(这解决了其余 IE 浏览器的问题)

贾西迪安的答案很接近。

就我而言,我只需要:

  • Windows 身份验证 -> 禁用

  • 匿名身份验证 -> 启用

  • ASP.NET 模拟 -> 禁用

  • 表单验证 -> 禁用

  • Windows 身份验证 -> 禁用

可以当用户没有被授权访问的页面发生此循环。

我们有我们的MVC控制器上的自定义授权属性,它会检查用户是否基于提供如果UseADFS的设置是在配置文件中真正的索赔是在一个角色。我认为这设置设置为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 =“真”,而不是UseADFS =“真”,这基本上使我定制的授权码就授权返回FALSE。因此,页面不停转发我回ADFS再次进行身份验证。

反正,如果用户不具有正确的权利要求书来访问页面,那么这ADFS登录可发生环,以及

另外,如果你写了一个自定义的授权属性是一定要看看下面的链接,介绍了如何防止循环。

重定向与.net MVC授权属性环与ADFS权利要求

从该链接用于AuthorizeAttribute定制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);
        }
    }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top