Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die JwtBearerEvents, WsFederationEvents und OpenIdConnectEvents Ereignisse sind Authentifizierungsereignisse, die jeweils von den JwtBearer-, WsFederation- und OpenIdConnect-Authentifizierungshandlern ausgelöst werden. Beispielsweise wird das OnTokenValidated Ereignis ausgelöst, wenn ein Sicherheitstoken überprüft wird. Diese Ereignisse werden mit einem Kontext (z. B. TokenValidatedContext) ausgelöst, der eine TokenValidatedContext.SecurityToken-Eigenschaft vom abstrakten Typ SecurityToken verfügbar macht. Die standardmäßige reale Implementierung von TokenValidatedContext.SecurityToken geändert von JwtSecurityToken zu JsonWebToken.
Eingeführte Version
ASP.NET Core 8.0 Preview 7
Vorheriges Verhalten
Zuvor wurden die betroffenen SecurityToken
-Eigenschaften von JwtSecurityToken implementiert, die von SecurityToken abgeleitet ist.
JwtSecurityToken ist die vorherige Generation der JSON Web Token (JWT)-Implementierung. Die JwtSecurityToken Tokens wurden von SecurityTokenValidators produziert.
Darüber hinaus hat das JwtSecurityTokenHandler.DefaultInboundClaimTypeMap Feld die Standardmäßige Anspruchstypzuordnung für eingehende Ansprüche bereitgestellt.
Neues Verhalten
Ab ASP.NET Core 8.0 implementiert die Microsoft.IdentityModel.JsonWebTokens-Klasse, die auch aus SecurityToken abgeleitet ist, standardmäßig die SecurityToken
-Eigenschaften.
Microsoft.IdentityModel.JsonWebTokens Token werden von optimierten TokenHandler Handlern erstellt.
Darüber hinaus stellt das JsonWebTokenHandler.DefaultInboundClaimTypeMap Feld die Standardmäßige Anspruchstypzuordnung für eingehende Ansprüche bereit.
Art der einschneidenden Änderung
Diese Änderung ist eine Verhaltensänderung.
Grund für Änderung
Diese Änderung wurde vorgenommen, da JsonWebToken (und damit verbunden JsonWebTokenHandler) die folgenden Vorteile bringen:
- 30 % Leistungssteigerung.
- Verbesserte Zuverlässigkeit mithilfe von „letzten als funktionierend bekannten Metadaten“ (z. B
OpenIdConnectMetadata
). - Asynchrone Verarbeitung.
Empfohlene Aktion
Für die meisten Benutzer sollte diese Änderung kein Problem darstellen, da sich der Typ der Eigenschaften (SecurityToken) nicht geändert hat, und Sie sollten den tatsächlichen Typ nicht betrachten.
Wenn Sie jedoch eine der betroffenen SecurityToken
Eigenschaften auf JwtSecurityToken
herunterstufen (z. B. um die Ansprüche abzurufen), haben Sie zwei Optionen:
Die Eigenschaft auf
JsonWebToken
herunterstufen.service.Configure<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme, options => { options.Events.OnTokenValidated = (context) => { // Replace your cast to JwtSecurityToken. JsonWebToken token = context.SecurityToken as JsonWebToken; // Do something ... }; });
Legen Sie eine der
UseSecurityTokenValidators
booleschen Eigenschaften für die entsprechenden Optionen (JwtBearerOptions, WsFederationOptionsoder OpenIdConnectOptions) auftrue
. Wenn die Eigenschaft auftrue
gesetzt ist, werden die Authentifizierungshandler weiterhinJwtTokenValidators
verwenden und weiterhinJwtSecurityToken
-Tokens erzeugen.service.Configure<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme, options => { options.UseSecurityTokenValidators = true; options.Events.OnTokenValidated = (context) => { // As you were doing before JwtSecurityToken token = context.SecurityToken as JwtSecurityToken; // Do something ... }; });
Betroffene APIs
- Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenValidatedContext.SecurityToken
- Microsoft.AspNetCore.Authentication.JwtBearer.TokenValidatedContext.SecurityToken
- Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenValidatedContext.SecurityToken
- AuthorizationCodeReceivedContext.SecurityToken