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
Freigeben: 2025-01-12 06:55:43
Original
1062 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage