Ich habe eine ASP.NET MVC 5-App, die sich gegen Azure Active Directory authentifiziert. Ich wollte SSL in der gesamten App aktivieren. und damit globale Filter wie folgt:
%Vor%Danach setze ich 'SSL aktivieren' in den Projekteigenschaften auf 'true'. Dies gab mir die folgende SSL URL - & gt; Ссылка . Ich habe das Projekt aktualisiert, um dies in seinem IIS Express-Pfad unter dem "Web Tab" unter Server in "Project URL" zu haben. Beim Ausführen der Site renne ich jedoch zu folgendem Fehler:
IDX10311: RequireNonce ist 'true' (Standard), aber validationContext.Nonce ist null. Eine Nonce kann nicht validiert werden. Wenn Sie die Nonce nicht überprüfen müssen, legen Sie OpenIdConnectProtocolValidator.RequireNonce auf 'false' fest.
Ich habe auth. auf der Website aktiviert. Ich verwende Azure Active Directory.
Der Sicherheitscode lautet wie folgt:
%Vor%Die auth. Werte werden aus der web.config gelesen und lauten wie folgt:
%Vor%Ich habe versucht, RequireNonce wie in der Fehlermeldung angegeben auf false zu setzen:
%Vor%Aber dies führte nur zu einem ungültigen Anfragefehler.
Könnte mir jemand helfen zu verstehen, was das Problem hier ist? Alles hat gut funktioniert, bis SSL aktiviert wurde.
Überprüfen Sie im Azure-Verwaltungsportal, ob Ihre Anwendung im entsprechenden Active Directory dieselbe Anmelde-URL und Antwort-URL aufweist.
Wenn sie nicht identisch sind, erhalten Sie diesen Fehler.
Dies passiert, wenn Sie SSL aktivieren, da nur die Anmeldungs-URL zur HTTPS-URL geändert wird, während die Antwort-URL dieselbe HTTP-URL bleibt.
Bearbeiten: Lesen Sie weiter, wenn Sie genau wissen wollen, warum das passiert,
Wenn Sie versuchen, mithilfe der https-URL auf Ihre App zuzugreifen, wird in Ihrem Browser ein Cookie mit einer eindeutigen Nummer (nonce) eingerichtet, und Azure AD wird zur Authentifizierung verwendet. Nach der Authentifizierung muss der Browser Zugang zu diesem Cookie geben. Da die Anmelde-URL und die Antwort-URL jedoch unterschiedlich sind, erkennt der Browser Ihre App nicht und gewährt keinen Zugriff auf diesen Cookie. Daher gibt die Anwendung diesen Fehler aus.
Ich kann diesen Fehler reproduzieren, indem ich die Taste "Zurück" mehrmals in meiner Webanwendung drücke, selbst nach erfolgreichem Login. kannst du diese 2 Dinge versuchen: in deinem Code unten:
%Vor%Fügen Sie den Protokollvalidator als eine der Authentifizierungsoptionen hinzu, da der folgende Fehler vermuten lässt:
%Vor%oder fügen Sie eine Benachrichtigung hinzu, damit Sie diesen Fehler abfangen und auf eine Fehlerseite umleiten können. Ich mache das, um es anmutig zu machen. Bis Katana Leute es repariert.
%Vor%Ich kann dieses Problem mit der folgenden Methode in der Datei Global.asax umgehen. Zumindest wird dies die Ausnahme für den Client nicht zeigen. Ich benutze ELMAH, um Ausnahmen zu fangen.
%Vor%Nun, es wäre wahrscheinlich am besten, sich den Katana-Quellcode anzusehen, von dem ich herausgefunden habe, dass der Ausnahmetyp OpenIdConnectProtocolInvalidNonceException ist, also handle ich so.
%Vor%Ich habe dieses Ausnahme-Popup in Browsern, die die Seiten zwischenspeichern und Benutzer, die nach dem Login auf die Zurück-Schaltfläche klicken.
Das Problem hier ist einfach ... brauchte Stunden um das herauszufinden. Da ich auf meinem lokalen getestet hatte keine HTTPS und um Ihnen die Wahrheit zu sagen, beim ersten Erstellen meiner App in Azure AD, da ich nicht erwartet, dass es https während meines Tests Ich habe es einfach http (ReplyUrl's HomePage URL, Logout all das Jazz)
Dann, nachdem ich das getan habe, bin ich auf das Problem mit der Endlosschleife gestoßen , das viele Leute bekommen. so entschied ich mich, das cert auf meinem lokalen und yep zu verspotten, das die infinate redirect los wurde, aber dann brachte ein anderes das "IDX10311: RequireNonce ist 'wahr" "ein
Lange Rede kurzer Sinn ... Machen Sie Ihre AzureAD-App in allen Endpunkten https. und Wallah!
Ich füge einfach einen anderen Fall hinzu, in den ich gerade hineingeraten bin: Das Netzwerk, mit dem Sie eine Verbindung herstellen, ändert möglicherweise den HTML-Inhalt.
Ein Kunde hat ein Problem gemeldet: Er konnte diesen Fehler nicht beheben. Es war ein neuer Laptop, bei dem er sich vorher nicht angemeldet hatte. Nach ungefähr einer Stunde, in der ich mehrere mögliche Lösungen versuchte, entschied ich mich, das Netzwerk zu überprüfen, mit dem er verbunden war.
Es stellte sich heraus, dass er mit einem Netzwerk in einem Flughafen verbunden war, offen und ungesichert, und keinen VPN-Dienst verwendete (ihm fehlte etwas SETA da). Ich weiß nicht genau, wer dieses Netzwerk betrieben hat oder was sie getan haben, aber der Azure AD-Dienst muss eine Art von Manipulation der Nonce entdeckt haben.
Sobald der Benutzer eine Verbindung zu einem vertrauenswürdigen Netzwerk hergestellt hat, wurde das Problem behoben.
Tags und Links asp.net-mvc ssl openid-connect nonce asp.net-mvc-filters