Autorisierung und Authentifizierung in C# (.NET) – vollständiger Leitfaden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Autorisierung und Authentifizierung in C# (.NET)

In der modernen Webentwicklung auf der .NET-Plattform sind die Themen Authentifizierung (Überprüfung der Benutzeridentität) und Autorisierung (Überprüfung der Zugriffsrechte) grundlegend. Die Bibliotheken und integrierten Mechanismen von ASP.NET Core bieten ein leistungsstarkes und flexibles Toolkit zur Umsetzung dieser Aufgaben. In diesem Artikel werden wir die wichtigsten Ansätze im Detail behandeln, einschließlich der Verwendung von JWT (JSON Web Tokens), ASP.NET Core Identity und integrierter Middleware-Komponenten.



Grundlegende Konzepte

  • Authentifizierung (Authentication) – der Prozess der Überprüfung, wer der Benutzer ist (z. B. Login + Passwort).
  • Autorisierung (Authorization) – der Prozess der Bestimmung, was der Benutzer tun darf (Rollen, Richtlinien, Claims).
  • Claims-basierte Identität – ein Ansatz, bei dem Benutzerinformationen als eine Reihe von Behauptungen (Claims) gespeichert werden.


ASP.NET Core Identity

ASP.NET Core Identity ist ein vollwertiges Benutzerverwaltungssystem, das Registrierung, Anmeldung, Passwortzurücksetzung, Zwei-Faktor-Authentifizierung und Rollenverwaltung umfasst. Es verwendet Entity Framework Core zur Speicherung der Daten in der Datenbank.

Um Identity in einem Projekt zu integrieren, reicht es aus, den Aufruf AddDefaultIdentity hinzuzufügen und die Verbindungszeichenfolge zu konfigurieren. Beispiel für eine grundlegende Konfiguration in Program.cs:

using Microsoft.AspNetCore.Identity;using Microsoft.EntityFrameworkCore;using YourApp.Data;

var builder = WebApplication.CreateBuilder(args);

// Datenbankkontext hinzufügenbuilder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

// Identity hinzufügenbuilder.Services.AddDefaultIdentity<IdentityUser>(options => { options.SignIn.RequireConfirmedAccount = false; options.Password.RequireDigit = true; options.Password.RequiredLength = 6;}).AddRoles<IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>();

builder.Services.AddControllersWithViews();

var app = builder.Build();

app.UseAuthentication();app.UseAuthorization();

app.MapRazorPages();app.Run();

Danach stehen Ihnen die Standardseiten für Registrierung und Anmeldung sowie Methoden zur Überprüfung von Rollen zur Verfügung:

[Authorize(Roles = "Admin")]public IActionResult AdminPanel(){    return View();}


JWT-Authentifizierung (JSON Web Tokens)

JWT ist eine kompakte und eigenständige Methode zur Übertragung von Informationen zwischen Parteien als JSON-Objekt. In .NET wird JWT häufig für die Erstellung von REST-APIs und SPA-Anwendungen verwendet. Die Hauptbibliothek ist Microsoft.AspNetCore.Authentication.JwtBearer.

Konfiguration von JWT in Program.cs:

using Microsoft.AspNetCore.Authentication.JwtBearer;using Microsoft.IdentityModel.Tokens;using System.Text;

var builder = WebApplication.CreateBuilder(args);

var key = Encoding.ASCII.GetBytes("YourSuperSecretKeyThatIsAtLeast32CharactersLong!");

builder.Services.AddAuthentication(options =>{ options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;}).AddJwtBearer(options =>{ options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = "yourdomain.com", ValidAudience = "yourdomain.com", IssuerSigningKey = new SymmetricSecurityKey(key) };});

builder.Services.AddAuthorization();builder.Services.AddControllers();

var app = builder.Build();app.UseAuthentication();app.UseAuthorization();app.MapControllers();app.Run();

Beispiel

Empfehlungen