Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les événements JwtBearerEvents, WsFederationEvents, et OpenIdConnectEvents sont des événements d'authentification déclenchés respectivement par les gestionnaires d’authentification JwtBearer, WsFederation, et OpenIdConnect. Par exemple, l’événement OnTokenValidated est déclenché lorsqu’un jeton de sécurité est validé. Ces événements sont déclenchés avec un contexte (par exemple) TokenValidatedContextqui expose une TokenValidatedContext.SecurityToken propriété de type SecurityTokenabstrait. L'implémentation réelle par défaut de TokenValidatedContext.SecurityToken a été modifiée de System.IdentityModel.Tokens.Jwt.JwtSecurityToken à JsonWebToken.
Version introduite
ASP.NET Core 8.0 Preview 7
Comportement précédent
Auparavant, les propriétés SecurityToken affectées étaient implémentées par System.IdentityModel.Tokens.Jwt.JwtSecurityToken, qui dérive de SecurityToken. JwtSecurityToken est l'implémentation précédente de JSON Web Token (JWT). Les JwtSecurityToken jetons ont été produits par SecurityTokenValidators.
En outre, le JwtSecurityTokenHandler.DefaultInboundClaimTypeMap champ a fourni le mappage de type de revendication par défaut pour les revendications entrantes.
Nouveau comportement
À partir de ASP.NET Core 8.0, la Microsoft.IdentityModel.JsonWebTokens classe, qui dérive également de SecurityToken, implémente les SecurityToken propriétés, par défaut. Microsoft.IdentityModel.JsonWebTokens Les jetons sont générés par des gestionnaires plus optimisés TokenHandler .
En outre, le JsonWebTokenHandler.DefaultInboundClaimTypeMap champ fournit le mappage de type de revendication par défaut pour les revendications entrantes.
Type de changement cassant
Ce changement est un changement de comportement.
Raison de la modification
Cette modification a été apportée, car JsonWebToken (et son associé JsonWebTokenHandler) apportent les avantages suivants :
- Amélioration des performances de 30 %.
- Amélioration de la fiabilité à l’aide d’une métadonnée « dernière bonne connue » (comme
OpenIdConnectMetadata, par exemple). - Traitement asynchrone.
Action recommandée
Pour la plupart des utilisateurs, cette modification ne doit pas être un problème, car le type des propriétés (SecurityToken) n’a pas changé, et vous n’avez pas été censé examiner le type réel.
Toutefois, si vous deviez rétroconvertir l’une des propriétés SecurityToken concernées à JwtSecurityToken (par exemple, pour obtenir les revendications), vous avez deux options :
Rétroconvertir la propriété vers
JsonWebToken:service.Configure<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme, options => { options.Events.OnTokenValidated = (context) => { // Replace your cast to JwtSecurityToken. JsonWebToken token = context.SecurityToken as JsonWebToken; // Do something ... }; });Définissez l’une des
UseSecurityTokenValidatorspropriétés booléennes sur les options correspondantes (JwtBearerOptions, WsFederationOptionsou OpenIdConnectOptions) surtrue. En définissant la propriététrue, les gestionnaires d’authentification continueront d’utiliserJwtTokenValidatorset continueront de produire des jetonsJwtSecurityToken.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 ... }; });
API affectées
- Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenValidatedContext.SecurityToken
- Microsoft.AspNetCore.Authentication.JwtBearer.TokenValidatedContext.SecurityToken
- Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenValidatedContext.SecurityToken
- AuthorizationCodeReceivedContext.SecurityToken