Události tokenu zabezpečení vracejí jsonWebToken
Události JwtBearerEventsa události WsFederationEventsOpenIdConnectEvents ověřování aktivované obslužnými rutinami ověřování JwtBearer, WsFederation a OpenId Připojení. Událost se například OnTokenValidated aktivuje při ověření tokenu zabezpečení. Tyto události se aktivují kontextem (například TokenValidatedContext), který zveřejňuje TokenValidatedContext.SecurityToken vlastnost abstraktního typu SecurityToken. Výchozí skutečná implementace TokenValidatedContext.SecurityToken změny z JwtSecurityToken na JsonWebToken.
Zavedená verze
ASP.NET Core 8.0 Preview 7
Předchozí chování
Dříve byly ovlivněné SecurityToken
vlastnosti implementovány JwtSecurityToken, což je odvozeno z SecurityToken. JwtSecurityToken je předchozí generace implementace webového tokenu JSON (JWT). Tokeny JwtSecurityToken byly vytvořeny SecurityTokenValidators.
Kromě toho JwtSecurityTokenHandler.DefaultInboundClaimTypeMap pole poskytlo výchozí mapování typů deklarací identity pro příchozí deklarace identity.
Nové chování
Počínaje ASP.NET Core 8.0, třída, Microsoft.IdentityModel.JsonWebTokens která je také odvozena od SecurityToken, implementuje SecurityToken
vlastnosti ve výchozím nastavení. Microsoft.IdentityModel.JsonWebTokens tokeny se vytvářejí optimalizovanějšími TokenHandler obslužnými rutinami.
Kromě toho JsonWebTokenHandler.DefaultInboundClaimTypeMap toto pole poskytuje výchozí mapování typů deklarací identity pro příchozí deklarace identity.
Typ zásadní změny
Tato změna je změna chování.
Důvod změny
Tato změna byla provedena, protože JsonWebToken (a její přidružená JsonWebTokenHandler) přináší následující výhody:
- 30% zlepšení výkonu.
- Vylepšili jsme spolehlivost pomocí metadat "posledního známého dobrého" (například
OpenIdConnectMetadata
). - Asynchronní zpracování.
Doporučená akce
U většiny uživatelů by tato změna neměla být problémem, protože typ vlastností (SecurityToken) se nezměnil a neměli jste se podívat na skutečný typ.
Pokud jste ale přetypovali jednu z ovlivněných SecurityToken
vlastností JwtSecurityToken
(například k získání deklarací identity), máte dvě možnosti:
Přetypování vlastnosti na
JsonWebToken
:service.Configure<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme, options => { options.Events.OnTokenValidated = (context) => { // Replace your cast to JwtSecurityToken. JsonWebToken token = context.SecurityToken as JsonWebToken; // Do something ... }; });
Nastavte jednu z
UseSecurityTokenValidators
logických vlastností odpovídajících možností (JwtBearerOptions, WsFederationOptionsnebo OpenIdConnectOptions) natrue
hodnotu . Nastavením vlastnosti natrue
, obslužné rutiny ověřování budou dál používatJwtTokenValidators
a budou dál vytvářetJwtSecurityToken
tokeny.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 ... }; });
Ovlivněná rozhraní API
- Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenValidatedContext.SecurityToken
- Microsoft.AspNetCore.Authentication.JwtBearer.TokenValidatedContext.SecurityToken
- Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenValidatedContext.SecurityToken
- AuthorizationCodeReceivedContext.SecurityToken
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro