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): Von den Grundlagen bis zu Unternehmenslösungen



Die Sicherheit von Webanwendungen ist ein kritischer Aspekt der Entwicklung, und im C# (.NET)-Ökosystem gibt es einen leistungsstarken Werkzeugsatz für die Implementierung von Authentifizierung (Überprüfung der Benutzeridentität) und Autorisierung (Überprüfung der Zugriffsrechte). In diesem Artikel werden wir die wichtigsten Ansätze behandeln: von der integrierten ASP.NET Core Identity bis hin zu flexiblen Lösungen auf Basis von JWT und OAuth 2.0.



1. ASP.NET Core Identity – Integriertes Benutzerverwaltungssystem



ASP.NET Core Identity ist ein vollwertiges Framework für Registrierung, Anmeldung, Rollen- und Passwortverwaltung. Es bietet vorgefertigte Modelle (User, Role), einen Speicher (standardmäßig Entity Framework + SQL Server) und Middleware.



// Registrierung in Program.csbuilder.Services.AddDbContext<AppDbContext>(options =>    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

builder.Services.AddDefaultIdentity<IdentityUser>(options =>{ options.SignIn.RequireConfirmedAccount = true; options.Password.RequiredLength = 8;}).AddRoles<IdentityRole>().AddEntityFrameworkStores<AppDbContext>();

// Middlewareapp.UseAuthentication();app.UseAuthorization();


Beispiel eines Controllers mit Schutz:



[Authorize(Roles = "Admin")]public class AdminController : Controller{    public IActionResult Index() => View();}

// Aktuellen Benutzer abrufenvar user = await _userManager.GetUserAsync(User);var roles = await _userManager.GetRolesAsync(user);


2. JWT (JSON Web Token) – Nahtlose Authentifizierung für APIs und SPAs



JWT ist ein kompaktes, URL-sicheres Token, das Claims (Aussagen) über den Benutzer enthält. Es ist ideal für REST-APIs, mobile Anwendungen und Single Page Applications (React, Angular, Vue).



Paketinstallation:

dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer


Konfiguration in Program.cs:



builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)    .AddJwtBearer(options =>    {        options.TokenValidationParameters = new TokenValidationParameters        {            ValidateIssuer = true,            ValidIssuer = "https://pythonlib.ru",            ValidateAudience = true,            ValidAudience = "https://api.pythonlib.ru",            ValidateLifetime = true,            IssuerSigningKey = new SymmetricSecurityKey(                Encoding.UTF8.GetBytes("SuperSecretKey123!SuperSecretKey123!")),            ClockSkew = TimeSpan.Zero        };    });


Token-Generierung (z. B. im Login-Controller):



var claims = new List<Claim>{    new Claim(ClaimTypes.Name, user.UserName),    new Claim(ClaimTypes.Role, "User"),    new Claim("custom_claim", "value")};

var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SuperSecretKey123!"));var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

var token = new JwtSecurityToken( issuer: "https://pythonlib.ru", audience: "https://api.pythonlib.ru", claims: claims, expires: DateTime.Now.AddHours(2), signingCredentials: creds);

return Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) });


Endpunktschutz:

[Authorize][HttpGet("profile")]public IActionResult GetProfile(){    var userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;    return Ok(new { Message = "Zugriff gewährt", UserId = userId });}


3. Cookie-Authentifizierung – Klassiker für MVC-Anwendungen



Für traditionelle serverseitige Anwendungen (Razor Pages, MVC) ist die Cookie-Authentifizierung praktisch. Der Benutzer erhält ein verschlüsseltes Cookie, das automatisch

Empfehlungen