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 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 offenlegt. Die standardmäßige reale Implementierung von TokenValidatedContext.SecurityToken geändert von System.IdentityModel.Tokens.Jwt.JwtSecurityToken zu JsonWebToken.
Eingeführt in Version
ASP.NET Core 8.0 Preview 7
Vorheriges Verhalten
Zuvor wurden die betroffenen SecurityToken-Eigenschaften von System.IdentityModel.Tokens.Jwt.JwtSecurityToken implementiert, der von SecurityToken abgeleitet ist.
JwtSecurityToken ist die vorherige Generation der JSON Web Token (JWT)-Implementierung. Die JwtSecurityToken Tokens wurden von SecurityTokenValidators.
Darüber hinaus hat das JwtSecurityTokenHandler.DefaultInboundClaimTypeMap Feld die Standardmäßige Anspruchstypzuordnung für eingehende Ansprüche bereitgestellt.
Neues Verhalten
Ab Version ASP.NET Core 8.0 implementiert die Microsoft.IdentityModel.JsonWebTokens Klasse, die auch von 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% Leistungsverbesserung.
- Verbesserte Zuverlässigkeit mithilfe einer "zuletzt bekannten gut" 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 heruntercasten (z. B. um die Claims abzurufen), haben Sie zwei Optionen:
Die Eigenschaft auf
JsonWebTokenabwerten.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
UseSecurityTokenValidatorsbooleschen Eigenschaften für die entsprechenden Optionen (JwtBearerOptions, WsFederationOptionsoder OpenIdConnectOptions) auftrue. Durch das Festlegen der Eigenschaft auftrueverwenden die Authentifizierungshandler weiterhinJwtTokenValidatorsund erzeugen weiterhinJwtSecurityToken-Tokens.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