ASP.NET Core Identity



ASP.NET Core Identity

ASP.NET Core Identity ist ein Authentifizierungs- und Autorisierungs-Framework, das in ASP.NET Core-Anwendungen integriert ist. Es bietet eine robuste Lösung zur Verwaltung von Benutzern, Passwörtern, Rollen, Claims und anderen sicherheitsrelevanten Funktionen. Diese API erleichtert Entwicklern die Implementierung von sicheren Anmeldesystemen und bietet dabei eine hohe Flexibilität und Anpassbarkeit. In diesem Blogpost werden wir uns anschauen, wie man Identity konfiguriert und verwendet.

Installation

Das Nuget Package kann mit dem folgenden Befehl installiert werden:

Konfiguration

Die Authentifizierung kann nun in der Program-Klasse konfiguriert werden. Dafür wird die Methode "AddIdentity()" verwendet. Mit der Methode "AddEntityFrameworkStores()" wird der DbContext angegeben, worin sich das Model für die Benutzer befindet. Dafür wird typischerweise die Klasse "IdentityUser" des Frameworks verwendet. Man kann allerdings auch eine eigene Klasse verwenden, welche davon erbt.
Der Lockout tritt auf, wenn für einen Benutzer zu viele falsche Passwörter eingegeben wurden. Daraufhin wird das Konto für die angegebene Zeitspanne gesperrt. Zusätzlich ist es möglich zu definieren, wie viele Fehlschläge es braucht, um den Lockout zu aktivieren.

Login

Das Login geschieht durch den SignInManager. Diesen kann man auf seiner Blazor Page für das Login verwenden, um die Eingaben zu prüfen und den Benutzer einzuloggen oder die entsprechende Fehlermeldung anzuzeigen. Die standardmässige Route für die Login-Seite lautet "/Account/Login".
Um den Benutzer wieder auszuloggen verwendet man ebenfalls den SignInManager.

Stores

In ASP.NET Core Identity gibt es verschiedene Stores, welche sich um das Speichern und Lesen von Benutzerdaten kümmern. Im Kapitel "Konfiguration" wurde erklärt, wie die Stores für eine Datenbank aus EF Core automatisch hinzugefügt werden können. Man kann aber auch eigene Stores implementieren. Dies ist nützlich, wenn man die Benutzerdaten an einem anderen Ort speichern möchte.

Beispiel

Angenommen man möchte nur einen einzigen Benutzer, welcher als Administrator fungieren sollte. Das gehashte Passwort und der Benutzername des Admins soll in der Konfiguration gespeichert werden. Um dies umzusetzen, muss eine eigene Implementierung des Stores umgesetzt werden:
Der RoleStore muss ebenfalls implementiert werden. Da es aber keine Funktionen für das Erstellen und Löschen von Rollen geben sollte, werfen die Methoden eine NotSupportedException.
Nun müssen die Stores in der Program-Klasse beim Konfigurieren der Identity angegeben werden:

Fazit

ASP.NET Core Identity ist ein vielseitiges Werkzeug für die Entwicklung sicherer Webanwendungen. Dieser Blogpost hat gezeigt, wie man das Identity-Framework installiert und konfiguriert, Benutzeranmeldungen und -abmeldungen implementiert und benutzerdefinierte Stores erstellt. Durch die Nutzung von ASP.NET Core Identity kann man die Sicherheit und Benutzerverwaltung einer Anwendung erheblich verbessern und gleichzeitig die Komplexität der Implementierung reduzieren.

Während ASP.NET Core Identity eine passende Wahl für viele Anwendungen ist, gibt es auch andere Lösungen zur Authentifizierung und Autorisierung. Dazu gehören OAuth und OpenID Connect, die mit IdentityServer implementiert werden können, oder externe Dienste wie Auth0 und Firebase Authentication. Diese Alternativen bieten ebenfalls robuste Funktionen und können je nach den spezifischen Anforderungen und Vorlieben der Anwendung sinnvoll sein.

Kommentare

Beliebte Posts aus diesem Blog

QuestPDF

Custom JsonConverter mit System.Text.Json