0Pricing
C# Academy · Lektion

JWT-Bearer-Authentifizierung konfigurieren

Binden Sie die Tokenvalidierung in die Pipeline ein.

JWT-Bearer-Authentifizierung konfigurieren ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.

Der JWT-Bearer-Handler

ASP.NET Core validiert eingehende JWTs mithilfe des JWT-Bearer-Authentifizierungs-Handlers aus dem Paket Microsoft.AspNetCore.Authentication.JwtBearer.

Er liest das Token aus dem Header Authorization: Bearer ..., validiert es und erstellt einen ClaimsPrincipal.

dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer

AddAuthentication

Die Registrierung beginnt mit AddAuthentication. Sie legen das Standardschema fest, damit das Framework weiß, welcher Handler verwendet werden soll, wenn kein Schema angegeben ist.

JwtBearerDefaults.AuthenticationScheme ist die Zeichenfolge "Bearer".

builder.Services
    .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer();

AddJwtBearer-Optionen

Die Überladung von AddJwtBearer akzeptiert einen Optionsdelegaten, in dem Sie konfigurieren, wie Tokens validiert werden.

Die wichtigste Eigenschaft ist TokenValidationParameters.

builder.Services
    .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            // configured below
        };
    });

Validieren von Aussteller und Zielgruppe

Setzen Sie ValidateIssuer und ValidateAudience, um sicherzustellen, dass das Token von Ihrer vertrauenswürdigen Stelle stammt und für Ihre API bestimmt war.

ValidIssuer und ValidAudience müssen mit den Claims iss und aud im Token übereinstimmen.

var tvp = new TokenValidationParameters
{
    ValidateIssuer = true,
    ValidIssuer = builder.Configuration["Jwt:Issuer"],
    ValidateAudience = true,
    ValidAudience = builder.Configuration["Jwt:Audience"]
};

Validieren des Signaturschlüssels

Die sicherheitskritischste Prüfung ist ValidateIssuerSigningKey zusammen mit einem IssuerSigningKey. Damit wird bestätigt, dass die Signatur mit Ihrem geheimen Schlüssel erstellt wurde.

Für eine symmetrische Signatur (HS256) erstellen Sie aus den Bytes des Geheimnisses einen SymmetricSecurityKey.

var key = new SymmetricSecurityKey(
    Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]!));

tvp.ValidateIssuerSigningKey = true;
tvp.IssuerSigningKey = key;

Validieren der Gültigkeitsdauer

ValidateLifetime = true weist abgelaufene Tokens zurück, indem die Claims exp und nbf überprüft werden.

ClockSkew berücksichtigt Zeitunterschiede zwischen Servern. Der Standardwert beträgt 5 Minuten; für kurzlebige Tokens sollten Sie ihn verringern.

tvp.ValidateLifetime = true;
tvp.ClockSkew = TimeSpan.FromSeconds(30);

Alles zusammenführen

Eine vollständige, für den Produktivbetrieb geeignete Konfiguration führt alle Validierungsparameter an einer Stelle zusammen.

builder.Services
    .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidIssuer = builder.Configuration["Jwt:Issuer"],
            ValidateAudience = true,
            ValidAudience = builder.Configuration["Jwt:Audience"],
            ValidateIssuerSigningKey = true,
            IssuerSigningKey = new SymmetricSecurityKey(
                Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]!)),
            ValidateLifetime = true,
            ClockSkew = TimeSpan.FromSeconds(30)
        };
    });

Die Reihenfolge der Middleware

Die Konfiguration allein reicht nicht aus. Sie müssen die Middleware für Authentifizierung und Autorisierung in die Pipeline aufnehmen, wobei die Reihenfolge wichtig ist.

UseAuthentication muss vor UseAuthorization aufgerufen werden.

var app = builder.Build();

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

app.MapControllers();
app.Run();

Endpunkte schützen

Sobald die Konfiguration abgeschlossen ist, versehen Sie Endpunkte mit [Authorize] (Controller) oder .RequireAuthorization() (minimale APIs), um ein gültiges Token vorauszusetzen.

app.MapGet("/me", (ClaimsPrincipal user) =>
        new { id = user.FindFirstValue(ClaimTypes.NameIdentifier) })
   .RequireAuthorization();

Eine vertrauenswürdige Stelle verwenden

Wenn Ihre Tokens von einem externen Identitätsanbieter stammen (z. B. Microsoft Entra ID oder Auth0), legen Sie statt eines statischen Schlüssels Authority fest.

Der Handler lädt die Signaturschlüssel anschließend automatisch aus dem Discovery-Dokument des Anbieters herunter.

.AddJwtBearer(options =>
{
    options.Authority = "https://login.myidp.com/";
    options.Audience = "my-api";
    // Keys are fetched from the OpenID configuration endpoint
});

Fehler bei der Validierung auslesen

JWT Bearer löst Ereignisse aus, in die Sie sich für die Protokollierung oder benutzerdefinierte Antworten einklinken können, beispielsweise OnAuthenticationFailed und OnChallenge.

options.Events = new JwtBearerEvents
{
    OnAuthenticationFailed = ctx =>
    {
        logger.LogWarning(ctx.Exception, "JWT validation failed");
        return Task.CompletedTask;
    }
};

Kurzer Test

Überprüfen Sie Ihr Verständnis der Pipeline-Konfiguration.

Zusammenfassung

Sie haben die JWT-Bearer-Authentifizierung konfiguriert:

  • AddAuthentication(...).AddJwtBearer(...) registriert den Handler.
  • TokenValidationParameters steuert die Prüfungen von Aussteller, Zielgruppe, Signaturschlüssel und Gültigkeitsdauer.
  • UseAuthentication() muss vor UseAuthorization() aufgerufen werden.
  • Verwenden Sie Authority für externe Identitätsanbieter.

Als Nächstes geht es darum, eigene Tokens auszustellen.

Häufig gestellte Fragen

Ist die Lektion „JWT-Bearer-Authentifizierung konfigurieren“ kostenlos?

Ja — der vollständige Text von „JWT-Bearer-Authentifizierung konfigurieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „JWT-Bearer-Authentifizierung konfigurieren“?

Binden Sie die Tokenvalidierung in die Pipeline ein. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C# Academy zu starten?

Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „JWT-Bearer-Authentifizierung konfigurieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?

Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. JWT-Struktur und Claims
  2. JWT-Bearer-Authentifizierung konfigurieren
  3. Tokens ausstellen
  4. Refresh-Tokens und Ablauf
← Zurück zu C# Academy