Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os eventos JwtBearerEvents, WsFederationEvents e OpenIdConnectEvents são eventos de autenticação disparados respectivamente pelos manipuladores de autenticação JwtBearer, WsFederation e OpenIdConnect. Por exemplo, o evento OnTokenValidated é desencadeado quando um token de segurança é validado. Esses eventos são disparados com um contexto (por exemplo, TokenValidatedContext) que expõe uma TokenValidatedContext.SecurityToken propriedade de tipo SecurityTokenabstrato. A implementação real padrão de TokenValidatedContext.SecurityToken foi alterada de System.IdentityModel.Tokens.Jwt.JwtSecurityToken para JsonWebToken.
Versão introduzida
ASP.NET Core 8.0 Preview 7
Comportamento anterior
Anteriormente, as propriedades afetadas SecurityToken foram implementadas pela System.IdentityModel.Tokens.Jwt.JwtSecurityToken, que deriva de SecurityToken.
JwtSecurityToken é a geração anterior da implementação do JSON Web Token (JWT). Os JwtSecurityToken tokens foram produzidos pela SecurityTokenValidators.
Além disso, o campo JwtSecurityTokenHandler.DefaultInboundClaimTypeMap forneceu o mapeamento padrão do tipo de reivindicação para reivindicações de entrada.
Novo comportamento
A partir do ASP.NET Core 8.0, a Microsoft.IdentityModel.JsonWebTokens classe, que também deriva de SecurityToken, implementa as SecurityToken propriedades, por padrão.
Microsoft.IdentityModel.JsonWebTokens Os tokens são produzidos por manipuladores mais otimizados TokenHandler .
Além disso, o JsonWebTokenHandler.DefaultInboundClaimTypeMap campo fornece o mapeamento de tipo de declaração padrão para declarações de entrada.
Tipo de mudança disruptiva
Esta alteração é de natureza comportamental .
Motivo da mudança
Esta alteração foi feita porque JsonWebToken (e os que lhe estão associados JsonWebTokenHandler) trazem os seguintes benefícios:
- 30% melhoria de desempenho.
- Maior confiabilidade usando metadados do "último bem conhecido" (como
OpenIdConnectMetadata). - Processamento assíncrono.
Ação recomendada
Para a maioria dos usuários, essa alteração não deve ser um problema, pois o tipo de propriedades (SecurityToken) não foi alterado e você não deveria olhar para o tipo real.
No entanto, se você estava fazendo downcast de uma das propriedades afetadas SecurityToken para JwtSecurityToken (por exemplo, para obter as reivindicações), você tem duas opções:
Efectuar downcast da propriedade para
JsonWebToken:service.Configure<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme, options => { options.Events.OnTokenValidated = (context) => { // Replace your cast to JwtSecurityToken. JsonWebToken token = context.SecurityToken as JsonWebToken; // Do something ... }; });Defina uma das
UseSecurityTokenValidatorspropriedades booleanas nas opções correspondentes (JwtBearerOptions, WsFederationOptions, ou OpenIdConnectOptions) comotrue. Ao definir a propriedade comotrue, os manipuladores de autenticação continuarão usandoJwtTokenValidatorse continuarão produzindoJwtSecurityTokentokens.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 ... }; });
APIs afetadas
- Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenValidatedContext.SecurityToken
- Microsoft.AspNetCore.Authentication.JwtBearer.TokenValidatedContext.SecurityToken
- Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenValidatedContext.SecurityToken
- AuthorizationCodeReceivedContext.SecurityToken