Passive Authentifizierungs-Middleware mit OWIN/Katana entwickeln

Das unter [1] gezeigte Beispiel zur Implementierung einer OWIN/Katana-basierte Middleware-Komponente für eine Authentifizierung via HTTP BASIC kann auch zur Demonstration der Funktionsweise von passiven Authentifizierungs-Middleware-Komponenten verwendet werden.  Dazu ist die Middleware lediglich unter Angabe von AuthenticationMode.Passive zu registrieren:

RegisterHttpBasicAuthMiddleware(app, AuthenticationMode.Passive);

Dies bewirkt, dass die Methode AuthenticateCoreAsync nicht mehr im Zuge der Anfrage angestoßen wird, wie es im aktiven Modus der Fall ist. Vielmehr liegt es nun an der Web-Anwendung, die Authentifizierung manuell zur Ausführung zu bringen.
Ein Web-API-basierter Controller könnte dies zum Beispiel wie im nachfolgenden Listing bewerkstelligen. Dabei ist zu beachten, dass an AuthenticateAsync der authenticationType, unter dem die Authentication-Middleware registriert wurde, zu übergeben ist. AuthenticateAsync sucht nach dem damit assoziierten Handler und bringt dessen Methode AuthenticateCoreAsync zur Ausführung.
Somit kann man im Rahmen der Ausführung von Routinen entscheiden, ob eine Authentifizierung notwendig ist und trotzdem die vorhandenen Middleware-Komponenten Framework-übergreifend einsetzen. Das Wissen darüber hilft auch beim Verständnis für den aktiven und passiven Modus, mit welchem man zum Beispiel beim Einsatz der neuen OWN/Katana-basierten Forms-Authentication zwangsweise zu tun hat.
public class SecurePassiveController: ApiController
{
    public async Task<string> Get()
    {
        IIdentity currentIdentity = null;

        var authResult = await Request
                                .GetOwinContext()
                                .Authentication
                                .AuthenticateAsync("BASIC");

        if (authResult == null || authResult.Identity == null) 
                 throw new HttpResponseException(HttpStatusCode.Unauthorized);

        return authResult.Identity.Name;
    }
}
 
[1] http://www.softwarearchitekt.at/post/2013/08/20/Benutzerdefinierte-Authentifizierungs-Strategien-in-ASPNET-vNext-mit-KatanaOWIN.aspx

 

Schulung und Beratung

Modern Web mit Angular 2

Datenbindung, Formulare, Validierung, Routing, HTTP, Komponenten, ...

Details

Migration auf Angular 2

Bestehende Projekte auf Angular 2 migrieren, ngUpgrade, ...

Details

Progressive Web-Apps mit Angular 2

InHouse-Schulung und/oder Beratung maßgeschneidert für Ihre Lernziele

Details

Architektur-Workshop

Interaktiver Prototyp-Workshop für Ihre Anwendung

Details

Entity Framework (EF)

Datenzugriff mit Entity Framework, Mapping-Szenarien, CRUD, Transaktionen, Migrations, Stored Procedures, Vererbung, Neuerungen in Version 7

Details

Angular 2: Deep Dive

Erweiterte Aspekte von Angular 2

Details

ASP.NET WebAPI

Web APIs mit ASP.NET, HTTP, REST, Security, Formatter, Tracing, OData, Streaming

Details

Web APIs mit ASP.NET MVC 6

Web APIs mit ASP.NET, HTTP, REST, Security, Formatter, Tracing, OData, Streaming

Details

Moderne Security-Szenarien für Web APIs

OAuth 2, OpenId Connect, JWT, Spielarten und Flows, ...

Details

Weitere Schulungen ...