Beveiligingstoken-gebeurtenissen retourneren een JsonWebToken
De JwtBearerEvents, WsFederationEventsen OpenIdConnectEvents gebeurtenissen zijn verificatiegebeurtenissen die respectievelijk worden geactiveerd door de JwtBearer, WsFederation en OpenId Verbinding maken verificatiehandlers. De gebeurtenis wordt bijvoorbeeld OnTokenValidated geactiveerd wanneer een beveiligingstoken wordt gevalideerd. Deze gebeurtenissen worden geactiveerd met een context (bijvoorbeeld TokenValidatedContext) waarmee een eigenschap van het TokenValidatedContext.SecurityToken abstracte type SecurityTokenwordt weergegeven. De standaard echte implementatie van gewijzigd van TokenValidatedContext.SecurityToken JwtSecurityToken in JsonWebToken.
Versie geïntroduceerd
ASP.NET Core 8.0 Preview 7
Vorig gedrag
Voorheen werden de betrokken SecurityToken
eigenschappen geïmplementeerd door JwtSecurityToken, die is afgeleid van SecurityToken. JwtSecurityToken is de implementatie van JSON Web Token (JWT) van de vorige generatie. De JwtSecurityToken tokens zijn geproduceerd door SecurityTokenValidators.
Daarnaast heeft het JwtSecurityTokenHandler.DefaultInboundClaimTypeMap veld de standaardclaimtypetoewijzing voor binnenkomende claims opgegeven.
Nieuw gedrag
Vanaf ASP.NET Core 8.0 implementeert de Microsoft.IdentityModel.JsonWebTokens klasse, die ook is afgeleid van SecurityToken, standaard de SecurityToken
eigenschappen. Microsoft.IdentityModel.JsonWebTokens tokens worden geproduceerd door meer geoptimaliseerde TokenHandler handlers.
Daarnaast biedt het JsonWebTokenHandler.DefaultInboundClaimTypeMap veld de standaardclaimtypetoewijzing voor binnenkomende claims.
Type wijziging die fouten veroorzaken
Deze wijziging is een gedragswijziging.
Reden voor wijziging
Deze wijziging is aangebracht omdat JsonWebToken (en de bijbehorende JsonWebTokenHandler) de volgende voordelen opleveren:
- 30% prestatieverbetering.
- Verbeterde betrouwbaarheid door gebruik te maken van 'laatst bekende goede' metagegevens (zoals
OpenIdConnectMetadata
). - Asynchrone verwerking.
Aanbevolen actie
Voor de meeste gebruikers zou deze wijziging geen probleem moeten zijn omdat het type eigenschappen (SecurityToken) niet is gewijzigd en u het echte type niet zou moeten bekijken.
Als u echter een van de beïnvloede SecurityToken
eigenschappen JwtSecurityToken
hebt gecast naar (bijvoorbeeld om de claims te verkrijgen), hebt u twee opties:
De eigenschap omlaag casten naar
JsonWebToken
:service.Configure<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme, options => { options.Events.OnTokenValidated = (context) => { // Replace your cast to JwtSecurityToken. JsonWebToken token = context.SecurityToken as JsonWebToken; // Do something ... }; });
Stel een van de
UseSecurityTokenValidators
Booleaanse eigenschappen voor de bijbehorende opties (JwtBearerOptions, WsFederationOptionsof OpenIdConnectOptions) in optrue
. Door de eigenschap in tetrue
stellen, blijven de verificatiehandlers tokens gebruikenJwtTokenValidators
en blijven ze tokens producerenJwtSecurityToken
.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 ... }; });
Betrokken API's
- Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenValidatedContext.SecurityToken
- Microsoft.AspNetCore.Authentication.JwtBearer.TokenValidatedContext.SecurityToken
- Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenValidatedContext.SecurityToken
- AuthorizationCodeReceivedContext.SecurityToken