Einleitung: Warum sind OAuth 2.0 und JWT der Standard der modernen Autorisierung?
In der modernen Webentwicklung ist die sichere Datenübertragung zwischen Client und Server eine kritische Aufgabe. Zwei Schlüsselprotokolle, die bei der Lösung dieser Aufgabe helfen, sind OAuth 2.0 (offenes Autorisierungsprotokoll) und JWT (JSON Web Token).
OAuth 2.0 ermöglicht es Anwendungen, eingeschränkten Zugriff auf Benutzerressourcen zu erhalten, ohne Login und Passwort zu übertragen. JWT wiederum ist ein kompaktes und eigenständiges Token-Format, das alle notwendigen Informationen zur Identifizierung des Benutzers enthält.
In diesem Artikel werden wir analysieren, wie man OAuth 2.0 und JWT-Autorisierung in C# (.NET) implementiert. Sie erfahren, wie Sie Middleware konfigurieren, ein Token generieren und API-Endpunkte schützen. Das Material richtet sich an Anfänger, die mit den Grundlagen von ASP.NET Core vertraut sind.
1. Grundlagen von OAuth 2.0 und JWT
Bevor wir Code schreiben, lassen Sie uns die Schlüsselkonzepte verstehen.
Was ist OAuth 2.0?
OAuth 2.0 ist ein Autorisierungsprotokoll, das es Drittanwendungen ermöglicht, auf Benutzerressourcen (z. B. Profildaten) zuzugreifen, ohne dessen Anmeldeinformationen zu übertragen. Stattdessen wird ein Access Token verwendet.
Die Hauptrollen in OAuth 2.0:
- Resource Owner — der Benutzer, der die Ressourcen besitzt.
- Client — die Anwendung, die Zugriff anfordert.
- Authorization Server — der Server, der nach der Authentifizierung des Benutzers Token ausstellt.
- Resource Server — der Server, der geschützte Ressourcen bereitstellt (z. B. API).
Was ist JWT?
JWT (JSON Web Token) ist ein Token-Format, das aus drei durch Punkte getrennten Teilen besteht:
- Header — enthält den Tokentyp (JWT) und den Signaturalgorithmus (z. B. HS256).
- Payload — enthält Daten (Claims), wie Benutzer-ID, Rolle, Ablaufdatum.
- Signature — die Signatur, die die Integrität des Tokens garantiert.
Ein JWT-Token sieht so aus: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
JWT ist eigenständig: Der Server muss keine Sitzungen in der Datenbank speichern, alle Informationen sind bereits im Token verschlüsselt.
2. Einrichtung des ASP.NET Core-Projekts für JWT-Autorisierung
Wir erstellen ein neues ASP.NET Core Web API-Projekt und konfigurieren die JWT-Autorisierung.
Schritt 1: Installation der NuGet-Pakete
Für die Arbeit mit JWT benötigen wir das Paket Microsoft.AspNetCore.Authentication.JwtBearer. Installieren Sie es über den NuGet Package Manager oder die Konsole:
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearerSchritt 2: Konfiguration von appsettings.json
Fügen Sie einen Abschnitt zum Speichern der JWT-Parameter hinzu (geheimer Schlüssel, Aussteller, Zielgruppe):
{ "Jwt": { "Key": "YourSuperSecretKey123!@#$%^&*()", "Issuer": "YourApp", "Audience": "YourAppUsers", "ExpireMinutes": 60 }}Schritt 3: Konfiguration von Program.cs
In der Datei Program.cs (oder Startup.cs für ältere Versionen) fügen wir die Authentifizierungsdienste und Middleware hinzu:
using Microsoft.AspNetCore.Authentication.JwtBearer;using Microsoft.IdentityModel.Tokens;using System.Text;
var builder = WebApplication.CreateBuilder(args);
// Konfiguration der JWT-Authentifizierungbuilder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true,