2017-03-22 2 views
1

Ich habe eine AspNetCore Web API, die ich mit IdentityServer4 sichern möchte. Ich habe erfolgreich IdentityServer4 implementiert und habe keine Probleme, Methoden in MVC-Controller mit dem [Authorize] Attribut zu sichern.Asp.NetCore Middleware Autorisierung

Ich kann nicht herausfinden, wie die Sicherheit mit benutzerdefinierte (nicht MVC) Middleware erzwingen, jedoch. Zum Beispiel in meinem Startup.cs, ich habe:

app.Use(async (context, next) => 
{ 
    // I want to require an authenticated user here 
    using (var writer = new StreamWriter(context.Response.Body)) 
    { 
    await writer.WriteAsync(string.Format("Welcome to the jungle, {0}", context.User.Identity.Name); 
    } 
}); 

ich einen Brute-Force-Ansatz nehmen könnte, aber klar ist die app.UseIdentityServer(); dass stark anheben zu behandeln ausgerichtet, so will ich nicht neu zu erfinden das Rad hier.

Antwort

1

Mein Vorschlag ist es, app.UseIdentityServer() vor der benutzerdefinierten owin Middleware setzen, wird die Middleware in der sequentiellen Reihenfolge aufgerufen werden, die sie in den Code geschrieben werden. Daher werden nicht autorisierte Benutzer herausgefiltert und umgeleitet, noch bevor sie Ihre benutzerdefinierte Middleware erreichen.

+0

Ich habe das getan, aber die Benutzer werden nicht aufgefordert, sich einfach mit dem Befehl 'app.UseIdentityServer()' einzuloggen. Dies ist sinnvoll, da einige MVC-Methoden möglicherweise nicht mit dem Attribut "[Authorize]" markiert sind, was bedeutet, dass ein anonymer Zugriff erlaubt sein sollte. –

Verwandte Themen