Heim >Backend-Entwicklung >C++ >Wie kann ich ASP.NET Core so konfigurieren, dass es mehrere JWT-Token-Aussteller unterstützt (z. B. Firebase und einen benutzerdefinierten Aussteller)?
Unterstützung mehrerer JWT-Token-Aussteller in ASP.NET Core
In diesem Handbuch wird erläutert, wie Sie ASP.NET Core für die Authentifizierung von JWTs aus mehreren Quellen konfigurieren, z. B. Firebase und einem benutzerdefinierten Aussteller. Die Standardmethode AddJwtBearer
unterstützt nur eine einzige Autorität, was dies zu einer häufigen Herausforderung macht.
Die Lösung: Mehrere Authentifizierungsschemata
Der Schlüssel liegt in der Verwendung mehrerer Authentifizierungsschemata innerhalb von ASP.NET Core. Dadurch kann die Anwendung JWTs von verschiedenen Emittenten unabhängig verarbeiten.
Implementierung (ASP.NET Core 2 und höher):
<code class="language-csharp">services .AddAuthentication() // No default scheme specified .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 => { // Configure validation parameters for your custom JWT issuer here. // Example: options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidIssuer = "your-custom-issuer", ValidateAudience = true, ValidAudience = "your-api-audience", ValidateLifetime = true, IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your-secret-key")) // Or your key retrieval method }; }); services .AddAuthorization(options => { options.DefaultPolicy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .AddAuthenticationSchemes("Firebase", "Custom") .Build(); });</code>
Wichtige Verbesserungen:
AddAuthentication()
wird ohne Parameter aufgerufen. Dadurch wird die automatische Authentifizierung mit einem einzigen Schema verhindert, sodass alle definierten Schemata einen Authentifizierungsversuch unternehmen können.AddJwtBearer
wird mit einem Schemanamen („Firebase“, „Benutzerdefiniert“) verwendet, um jeden Aussteller separat zu registrieren.Fehlerbehandlung:
Bei Authentifizierungsfehlern können IDX10501
Fehler auftreten. Dies liegt häufig daran, dass die Authentifizierungs-Middleware jedes Schema nacheinander überprüft. In vielen Fällen kann dieser Fehler getrost ignoriert werden.
ASP.NET Core 6 und höher:
In neueren Versionen ist ein Standardauthentifizierungsschema erforderlich. Hier ist ein angepasstes Beispiel:
<code class="language-csharp">builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.Audience = "your-api-audience"; options.Authority = "your-identity-server-url"; // Or your default JWT issuer }) .AddJwtBearer("AzureAD", options => { options.Audience = "your-api-audience"; options.Authority = "your-azure-ad-authority"; }); builder.Services.AddAuthorization(options => { options.DefaultPolicy = new AuthorizationPolicyBuilder( JwtBearerDefaults.AuthenticationScheme, "AzureAD") .RequireAuthenticatedUser() .Build(); });</code>
Denken Sie daran, Platzhalter wie "my-firebase-project"
, "your-custom-issuer"
, "your-secret-key"
, "your-api-audience"
, "your-identity-server-url"
und "your-azure-ad-authority"
durch Ihre tatsächlichen Werte zu ersetzen. Erwägen Sie die Verwendung einer robusteren Schlüsselverwaltung für Produktionsumgebungen. Richtlinienbasierte Autorisierung kann eine detailliertere Kontrolle für komplexe Szenarien ermöglichen.
Das obige ist der detaillierte Inhalt vonWie kann ich ASP.NET Core so konfigurieren, dass es mehrere JWT-Token-Aussteller unterstützt (z. B. Firebase und einen benutzerdefinierten Aussteller)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!