ADFS v2.0 Fehler: MSIS7042: Die gleiche Client-Browser-Sitzung hat ‚6‘ Anfragen in den letzten ‚1‘ s gemacht

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

Frage

Die Leute,   Ich habe eine ASP.NET MVC-Anwendung, dass ich die Release Candidate-Version von ADFS v2.0 (Genf) zu sichern versucht bin verwenden. Ich habe die Anwendung als vertrauende Vertrauen konfiguriert, und ich habe verwendet Fedutil.exe der Anwendung Web.config so zu modifizieren, dass sie die Informationen über die Geneva-Server hat und nutzt den Genfer Server als seine Ansprüche Quelle.

Allerdings, wenn ich versuchen, und drücken Sie die MVC-app, leitet es nach Genf, die dann (nach mir selbst signiertes Zert Warnung) mich wieder in die MVC-app umleitet. beide selbst signiertes Zertifikat Warnungen Nach Annahme, spielen die beiden Server Pingpong miteinander in einer unendlichen Schleife Redirect bis schließlich Genf Austriebe die folgende Meldung:

Die gleiche Client-Browser-Sitzung hat ‚6‘ Anfragen in den letzten ‚1‘ Sekunden gemacht. Es könnte eine mögliche schlechte Konfiguration sein. Kontaktieren Sie Ihren Administrator.

Es gibt keine Fehler in den Ereignisprotokollen auf der MVC-Seite oder auf Genf, außer für eine Veranstaltung der obige Nachricht enthält. Wenn mir jemand ein paar Informationen darüber geben könnte, wie zu versuchen und zu debuggen, diagnostizieren, und hoffentlich dieses Problem zu beheben, würde ich ewig dankbar sein.

Auch hier ist das Genfere Feld der ADFS v2.0 Release Candidate und die Website ASP.NET MVC wurde mit der neuesten (Ende '09) Version der Windows Identity Foundation SDK mit Web.config eingebaute Programmen mit FedUtil.exe aus der WIF-SDK.


So können Sie alle einen Tritt aus dieser bekommen ... habe ich versucht, diese gleiche Anwendung von Firefox und ... es funktioniert. Ich werde für meine Domain-Anmeldeinformationen aufgefordert werden, den Server v2 ADFS Wieder lenkt mich einmal und dann habe ich auf der Homepage meiner Anwendung, komplett mit meinen Account-Namen am Ende und persönlichen Gruß. So, jetzt die eigentliche Frage ist diese: Warum zum Teufel ist IE8 in einer unendlichen Schleife Redirect ertappt und Firefox IST NICHT ?? Nach noch weitere Tests, ich habe in der Lage gewesen, dieses Szenario zum Laufen zu bringen, aus dem Kasten heraus, ohne Änderungen mit einem der Standard-Pipeline Sachen von ADFS v2 (RC) oder von WIF (RTW) auf beide Safari und Firefox. IE8 ist der einzige Browser ein Problem Umgang mit diesem Authentifizierungsszenario zu zeigen. Ich habe alles versucht, einschließlich der Installation und die selbstsignierte Zertifikate zu vertrauen, und fügte hinzu, die Websites zu meinem lokalen Intranetzone und Sicherheit zu niedrig fallen und sogar erste und Cookies von Drittanbietern Einstellung immer zulassen.

War es hilfreich?

Lösung 2

Es stellte sich heraus, dass der Hostname des vertrauende darin einen Unter hatte (khoffman_2). Offenbar der Unterstrich ist ein illegaler DNS Charakter und wird nur IE die Informationen mit dem Unterstrich in ablehnen.

umbenannt ich meine Maschine von khoffman_2 zu khoffman2 und die ADFS v2 / MVC vertrauende Kombination funktioniert einwandfrei auf Firefox, Safari und IE.

Andere Tipps

Ich hatte das gleiche Problem mit ADFS 1.0 Und um es zu lösen, stellt ich sicher, dass die URL einen hinteren Schrägstrich hatte „/“ Das wäre immer Arbeit in FireFox sowie IE

zB: https://somedomain.com/Application_2/

Dies ist zwar nicht Ihr Problem ist, haben wir identische Probleme hatten, was Sie beschrieben. Unsere Lösung war:

  1. Aktiviert Standardauthentifizierung in IIS (dies nichts gelöst, sondern wurde für die nächsten zwei Schritte erforderlich)
  2. Deaktivieren der Windows-Authentifizierung in IIS (das Problem für einige IE-Browser gelöst, aber nicht alle)
  3. Deaktivieren des anonymen Zugriffs in IIS (dies das Problem für den Rest der IE-Browser gelöst)

Jaxidian Antwort liegt in der Nähe.

In meinem Fall habe ich nur musste:

  • Windows-Authentifizierung -> Disabled

  • Anonymous Auth -> Aktiviert

  • ASP.NET-Identitätswechsel -> Disabled

  • Formulare Auth -> Disabled

  • Windows-Auth -> Disabled

Diese Schleife auftreten, wenn ein Benutzer nicht auf eine Seite zuzugreifen autorisiert ist.

Wir hatten eine individuelle Genehmigung Attribut auf unserer MVC-Controller, dass überprüft, ob der Benutzer in einer Rolle war auf der Grundlage der vorgesehenen Ansprüche, wenn die Einstellung für UseADFS wahr in den Konfigurationsdateien war. Ich dachte, diese Einstellung auf true gesetzt wurde und verwirrt, dass ich hielt die adfs Schleife bekommen, wenn Zugriff auf die Seite, weil ich in den Gruppen war, die auf die Seite zuzugreifen autorisiert wurden.

Der Schlüssel zur Fehlerbehebung war eine Web-Seite zu machen, die meine adfs Ansprüche, ohne notwendigerweise eine Authentifizierung angezeigt.

@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>


}

bemerkte ich, dass ich in ADFS angemeldet zu werden, und meine Ansprüche wurden Set bekommen, so ADFS arbeitet. Die eigentliche Frage war meine Config-Datei UserADFS hatte = „true“ statt UseADFS = „true“, die im Grunde auf Genehmigung meines benutzerdefinierten Autorisierungscode return false verursacht. Daher hielt die Seite mich zurück zu adfs Weiterleitung erneut zu authentifizieren.

Wie auch immer, wenn ein Benutzer nicht die richtigen Ansprüche hat die Seite zuzugreifen, dann melden Sie diese adfs Schleife auftreten können, wie gut.

Auch wenn Sie ein benutzerdefiniertes autorisieren Attribut sicher sein, schreiben den folgenden Link zu überprüfen, das beschreibt, wie die Schleife verhindern.

Redirect-Schleife mit .NET MVC autorisieren Attribut mit ADFS Ansprüche

Benutzerdefinierte HandleUnauthorizedRequest-Handler-Code für AuthorizeAttribute von diesem Link:

 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);
        }
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top