ASP.NET Core 2.0 deaktiviert die automatische Abfrage

8

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?

    
severin 25.08.2017, 09:15
quelle

6 Antworten

14

Wie in einigen anderen Antworten erwähnt, gibt es keine Einstellung mehr, um die automatische Abfrage mit Cookie-Authentifizierung zu deaktivieren. Die Lösung besteht darin, OnRedirectToLogin :

zu überschreiben %Vor%

Dies könnte sich in Zukunft ändern: Ссылка

    
severin 30.08.2017, 08:35
quelle
14

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%     
Zheng Xing 26.08.2017 12:06
quelle
3

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:

  • Sie möchten, dass der Benutzer automatisch in
  • angemeldet wird
  • Sie verwenden das [Autorisieren] -Attribut oder die Autorisierungsrichtlinien ohne Angabe von Schemata

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.

    
Sergey 25.08.2017 10:24
quelle
3

Ähnlich wie bei @Serverin funktioniert das Setzen des OnRedirectToLogin des Anwendungsplätzchens, muss aber in der Anweisung services.AddIdentity in Startup.cs gefolgt werden: ConfigureServices:

%Vor%     
sammarcow 27.10.2017 16:25
quelle
0

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.

    
Gary Holland 25.08.2017 09:57
quelle
0

Dies ist der Quellcode von CookieAuthenticationEvents.OnRedirectToLogin:

%Vor%

Sie können der Anforderung den Header "X-Requested-With: XMLHttpRequest" hinzufügen, während Sie API-Aufrufe von Ihrem Client ausführen.

    
Zack 08.03.2018 18:50
quelle