Sdílet prostřednictvím


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í.

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) na truehodnotu . Nastavením vlastnosti na true, obslužné rutiny ověřování budou dál používat JwtTokenValidators a budou dál vytvářet JwtSecurityToken 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