Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Händelserna JwtBearerEvents, WsFederationEventsoch OpenIdConnectEvents är autentiseringshändelser som utlöses av JwtBearer, WsFederation och OpenIdConnect-autentiseringshanterare . Till exempel triggas OnTokenValidated-händelsen när en säkerhetstoken verifieras. Dessa händelser utlöses med en kontext (till exempel TokenValidatedContext) som exponerar en TokenValidatedContext.SecurityToken egenskap av abstrakt typ SecurityToken. Den faktiska standardimplementeringen av TokenValidatedContext.SecurityToken ändrades från System.IdentityModel.Tokens.Jwt.JwtSecurityToken till JsonWebToken.
Version lanserad
ASP.NET Core 8.0 Förhandsversion 7
Tidigare beteende
Tidigare implementerades de berörda SecurityToken egenskaperna av System.IdentityModel.Tokens.Jwt.JwtSecurityToken, som härleds från SecurityToken.
JwtSecurityToken är den tidigare generationens JSON-webbtokenimplementering (JWT). Token JwtSecurityToken skapades av SecurityTokenValidators.
Dessutom angav fältet JwtSecurityTokenHandler.DefaultInboundClaimTypeMap standardmappning av anspråkstyp för inkommande anspråk.
Nytt beteende
Från och med ASP.NET Core 8.0, implementerar Microsoft.IdentityModel.JsonWebTokens-klassen, som också härleds från SecurityToken, SecurityToken-egenskaperna som standardinställning.
Microsoft.IdentityModel.JsonWebTokens token skapas av mer optimerade TokenHandler hanterare.
Dessutom tillhandahåller fältet JsonWebTokenHandler.DefaultInboundClaimTypeMap standardmappning av anspråkstyp för inkommande anspråk.
Typ av brytande ändring
Den här ändringen är en beteendeförändring.
Orsak till ändring
Den här ändringen gjordes eftersom JsonWebToken (och dess associerade JsonWebTokenHandler) medför följande fördelar:
- 30% prestandaförbättring.
- Förbättrad tillförlitlighet med hjälp av "senast kända bra" metadata (till exempel
OpenIdConnectMetadata). - Asynkron bearbetning
Rekommenderad åtgärd
För de flesta användare bör den här ändringen inte vara ett problem eftersom typen av egenskaper (SecurityToken) inte har ändrats och du inte skulle titta på den verkliga typen.
Men om du nedkonverterade någon av de berörda SecurityToken egenskaperna till JwtSecurityToken (till exempel för att hämta anspråken) har du två alternativ:
Lägg ned egenskapen till
JsonWebToken:service.Configure<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme, options => { options.Events.OnTokenValidated = (context) => { // Replace your cast to JwtSecurityToken. JsonWebToken token = context.SecurityToken as JsonWebToken; // Do something ... }; });Ange en av de
UseSecurityTokenValidatorsbooleska egenskaperna för motsvarande alternativ (JwtBearerOptions, WsFederationOptionseller OpenIdConnectOptions) tilltrue. Genom att ange egenskapen tilltruefortsätter autentiseringshanterare att användaJwtTokenValidatorsoch fortsätter att produceraJwtSecurityTokentoken.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 ... }; });
Berörda API:er
- Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenValidatedContext.SecurityToken
- Microsoft.AspNetCore.Authentication.JwtBearer.TokenValidatedContext.SecurityToken
- Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenValidatedContext.SecurityToken
- AuthorizationCodeReceivedContext.SecurityToken