Delen via


Beveiligingstoken-gebeurtenissen retourneren een JSON Web Token

De JwtBearerEvents, WsFederationEventsen OpenIdConnectEvents gebeurtenissen zijn verificatiegebeurtenissen die respectievelijk worden geactiveerd door de JwtBearer-, WsFederation- en OpenIdConnect-verificatiehandlers . De gebeurtenis OnTokenValidated wordt bijvoorbeeld 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 implementatie van TokenValidatedContext.SecurityToken is veranderd van System.IdentityModel.Tokens.Jwt.JwtSecurityToken naar JsonWebToken.

Geïntroduceerde versie

ASP.NET Core 8.0 Preview 7

Vorig gedrag

Voorheen werden de betrokken SecurityToken eigenschappen geïmplementeerd door System.IdentityModel.Tokens.Jwt.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 van brekende verandering

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.

Voor de meeste gebruikers mag deze wijziging geen probleem zijn omdat het type eigenschappen (SecurityToken) niet is gewijzigd en u het echte type niet zou moeten bekijken.

Als u echter een van de aangetaste SecurityToken-eigenschappen naar JwtSecurityToken hebt geconverteerd (bijvoorbeeld om de claims te verkrijgen), dan 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 op true. Door de eigenschap in te truestellen, blijven de verificatiehandlers JwtTokenValidators gebruiken en blijven ze tokens van JwtSecurityToken produceren.

    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 ...
        };
    });
    

Betreffende API's