Heim >Backend-Entwicklung >C++ >Wie gehe ich mit mehreren JWT-Ausstellern in ASP.NET Core um?

Wie gehe ich mit mehreren JWT-Ausstellern in ASP.NET Core um?

DDD
DDDOriginal
2025-01-12 06:55:431016Durchsuche

How to Handle Multiple JWT Issuers in ASP.NET Core?

Verwaltung mehrerer JWT-Aussteller in ASP.NET Core 2

ASP.NET Core 2 unterstützt die Handhabung mehrerer JWT-Token-Anbieter. Diese Funktionalität ist von entscheidender Bedeutung, wenn Ihre API in externe Dienste integriert werden muss, die unterschiedliche JWT-Token-Ausgabemechanismen verwenden.

Um diese Funktion zu erreichen, verwenden Sie bitte den folgenden Code:

<code class="language-csharp">services
    .AddAuthentication()
    .AddJwtBearer("Firebase", options =>
    {
        options.Authority = "https://securetoken.google.com/my-firebase-project";
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidIssuer = "my-firebase-project",
            ValidateAudience = true,
            ValidAudience = "my-firebase-project",
            ValidateLifetime = true
        };
    })
    .AddJwtBearer("Custom", options =>
    {
        // 在此处配置自定义 JWT 令牌选项
    });

services
    .AddAuthorization(options =>
    {
        options.DefaultPolicy = new AuthorizationPolicyBuilder()
            .RequireAuthenticatedUser()
            .AddAuthenticationSchemes("Firebase", "Custom")
            .Build();
    });</code>

Dieser Code unterscheidet sich in mehreren wesentlichen Punkten vom ursprünglichen Codeausschnitt:

  1. Authentifizierungsschema-Überladungen: Die AddJwtBearer-Methode verfügt über mehrere Überladungen, von denen eine die Angabe des Namens des Authentifizierungsschemas ermöglicht. Da wir mehrere Szenarien haben, muss diese Überladung verwendet werden.
  2. Kein Standardauthentifizierungsschema: Die Methode AddAuthentication wird ohne Parameter verwendet, um das Festlegen eines Standardauthentifizierungsschemas zu vermeiden. Dies liegt daran, dass die Handhabung mehrerer Authentifizierungsschemata erfordert, dass jede Anfrage alle Schemata durchläuft.
  3. Richtlinienaktualisierung: DefaultPolicy wurde geändert, um die Authentifizierungsschemata „Firebase“ und „Benutzerdefiniert“ zu ermöglichen. Dadurch wird sichergestellt, dass das Autorisierungssystem versucht, die Anfrage mithilfe beider Schemata zu authentifizieren.
  4. Authentifizierungsbehandlung: Wenn Sie das AuthenticationFailed-Ereignis verarbeiten, beachten Sie bitte, dass bei nicht ersten AddJwtBearer-Richtlinien der Fehler „IDX10501: Signaturvalidierung fehlgeschlagen“ auftreten kann. Dies liegt daran, dass das System nacheinander versucht, die Signatur jeder Richtlinie abzugleichen.

Zusätzliche Hinweise für .NET Core 6 und höher

In .NET Core 6 und höher muss ein Standardautorisierungsschema angegeben werden. Verwenden Sie stattdessen den folgenden Code:

<code class="language-csharp">builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            // Firebase 配置
        })
        .AddJwtBearer("AzureAD", options =>
        {
            // Azure AD 配置
        });

builder.Services.AddAuthorization(options =>
{
    var defaultAuthorizationPolicyBuilder = new AuthorizationPolicyBuilder(
        JwtBearerDefaults.AuthenticationScheme,
        "AzureAD");
    defaultAuthorizationPolicyBuilder =
        defaultAuthorizationPolicyBuilder.RequireAuthenticatedUser();
    options.DefaultPolicy = defaultAuthorizationPolicyBuilder.Build();
});</code>

Durch die Implementierung der bereitgestellten Lösung können Sie mehrere JWT-Token-Aussteller in Ihrer ASP.NET Core 2-Anwendung nahtlos verwalten.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit mehreren JWT-Ausstellern in ASP.NET Core um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn