Nach dem Upgrade meines ASP.NET Core-Projekts auf 2.0 werden Versuche, auf geschützte Endpunkte zuzugreifen, nicht mehr 401 zurückgegeben, sondern werden zu einem (nicht vorhandenen) Endpunkt umgeleitet, um den Benutzer authentifizieren zu lassen.
Das gewünschte Verhalten ist, dass die Anwendung einfach eine 401 zurückgibt. Vorher würde ich AutomaticChallenge = false
beim Konfigurieren der Authentifizierung einstellen, aber gemäß dieser Artikel ist die Einstellung nicht mehr relevant (tatsächlich existiert sie nicht mehr).
Meine Authentifizierung ist wie folgt konfiguriert:
Startup.cs.ConfigureServices ():
%Vor%Konfigurieren ():
%Vor%Wie kann ich die automatische Abfrage deaktivieren, sodass die Anwendung 401 zurückgibt, wenn der Benutzer nicht authentifiziert ist?
Nach einigen Recherchen fand ich heraus, dass wir dieses Problem mit dem folgenden Ansatz lösen können:
Wir können zwei Authentifizierungsschemata sowohl Identität als auch JWT hinzufügen; und verwenden Sie das Identitätsschema für die Authentifizierung und verwenden Sie das JWT-Schema für den Challenge. JWT leitet während der Challenge keine Route zu einer Login-Route um.
%Vor%Nach dies Artikel:
In 1.x sollten die Eigenschaften AutomaticAuthenticate und AutomaticChallenge in einem einzigen Authentifizierungsschema festgelegt werden. Es gab keinen guten Weg, dies durchzusetzen.
In Version 2.0 wurden diese beiden Eigenschaften als Flags für die einzelnen AuthenticationOptions -Instanzen entfernt und in die Basis-AuthenticationOptions-Klasse verschoben. Die Eigenschaften können im Methodenaufruf AddAuthentication in der Methode ConfigureServices von Startup.cs
konfiguriert werden %Vor%Verwenden Sie alternativ eine überladene Version der AddAuthentication-Methode, um mehr als eine Eigenschaft festzulegen. Im folgenden überladenen Methodenbeispiel ist das Standardschema auf CookieAuthenticationDefaults.AuthenticationScheme festgelegt. Das Authentifizierungsschema kann alternativ in Ihren individuellen [Autorisieren] Attributen oder Autorisierungsrichtlinien angegeben werden.
%Vor%Definieren Sie ein Standardschema in 2.0, wenn eine der folgenden Bedingungen zutrifft:
Eine Ausnahme von dieser Regel ist die Methode AddIdentity . Diese Methode fügt Cookies für Sie hinzu und legt die standardmäßigen Authentifizierungs- und Anfragebeschreibungen auf den Anwendungscookie IdentityConstants.ApplicationScheme fest. Außerdem wird das Standardanmeldungsschema für das externe Cookie IdentityConstants.ExternalScheme festgelegt.
Hoffe, das hilft dir.
Ich bin mir nicht sicher, wie man den 401-Fehler erzeugt, wenn Sie jedoch das:
verwenden %Vor%Dies ermöglicht es Ihnen, irgendwo umzuleiten, wenn die Herausforderung fehlgeschlagen ist.
Tags und Links c# authentication asp.net-core asp.net-core-mvc