Delen via


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.

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 op true. Door de eigenschap in te truestellen, blijven de verificatiehandlers tokens gebruiken JwtTokenValidators en blijven ze tokens produceren JwtSecurityToken .

    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