Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
События JwtBearerEvents, WsFederationEvents и OpenIdConnectEvents — это события проверки подлинности, которые активируются обработчиками проверок подлинности JwtBearer, WsFederation и OpenIdConnect. Например, OnTokenValidated событие запускается при проверке маркера безопасности. Эти события запускаются с помощью контекста (например, TokenValidatedContext), который предоставляет TokenValidatedContext.SecurityToken свойство абстрактного типа SecurityToken. Реализация по умолчанию изменена с TokenValidatedContext.SecurityToken на JwtSecurityToken.
Представленная версия
ASP.NET Core 8.0 (предварительная версия 7)
Предыдущее поведение
Ранее затронутые SecurityToken
свойства были реализованы классом JwtSecurityToken, который наследуется от SecurityToken.
JwtSecurityToken — это предыдущее поколение реализации веб-токена JSON (JWT). Маркеры JwtSecurityToken были созданы SecurityTokenValidators.
Кроме того, JwtSecurityTokenHandler.DefaultInboundClaimTypeMap поле предоставило сопоставление типов утверждений по умолчанию для входящих утверждений.
Новое поведение
Начиная с ASP.NET Core 8.0, класс, Microsoft.IdentityModel.JsonWebTokens который также является производным от SecurityToken, реализует SecurityToken
свойства по умолчанию.
Microsoft.IdentityModel.JsonWebTokens токены создаются более оптимизированными TokenHandler обработчиками.
Кроме того, поле JsonWebTokenHandler.DefaultInboundClaimTypeMap предоставляет сопоставление типов утверждений по умолчанию для входящих утверждений.
Тип разрушающего изменения
Причина изменения
Это изменение было сделано потому, что JsonWebToken (и связанные с ним JsonWebTokenHandler) приносят следующие преимущества:
- 30% улучшение производительности.
- Улучшение надежности за счет использования метаданных в последнем известном корректном состоянии (например,
OpenIdConnectMetadata
). - Асинхронная обработка.
Рекомендуемое действие
Для большинства пользователей это изменение не должно быть проблемой, так как тип свойств (SecurityToken) не изменился, и вы не должны были смотреть на реальный тип.
Однако если вы выполнили приведение к одному из затронутых SecurityToken
свойств JwtSecurityToken
(например, чтобы получить утверждения), у вас есть два варианта:
Приведение свойства вниз к
JsonWebToken
:service.Configure<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme, options => { options.Events.OnTokenValidated = (context) => { // Replace your cast to JwtSecurityToken. JsonWebToken token = context.SecurityToken as JsonWebToken; // Do something ... }; });
Установите одно из логических свойств
UseSecurityTokenValidators
для соответствующих параметров (JwtBearerOptions, WsFederationOptions, или OpenIdConnectOptions) в значениеtrue
. Задав свойству значениеtrue
, обработчики проверки подлинности будут продолжать использоватьJwtTokenValidators
и продолжать производить токены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 ... }; });
Затронутые API
- Microsoft.AspNetCore.Authentication.WsFederation.SecurityTokenValidatedContext.SecurityToken
- Microsoft.AspNetCore.Authentication.JwtBearer.TokenValidatedContext.SecurityToken
- Microsoft.AspNetCore.Authentication.OpenIdConnect.TokenValidatedContext.SecurityToken
- КонтекстПолученияКодаАвторизации.ТокенБезопасности