Heim >Backend-Entwicklung >C++ >Wie gehe ich mit mehreren JWT-Ausstellern in ASP.NET Core um?
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:
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. 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. 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. 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!