Обновление System.IdentityModel.Tokens.Jwt, вызывающее нарушение в IdentityServer3 Client
Надеюсь, это будет легко решить.
Пакет Microsoft System.IdentityModels.Tokens.Jwt
был обновлен вчера на NuGet от 4.0.2.206211351
до v5.0
. Это, к сожалению, вызывает изменение с некоторым "стандартным" кодом IdentityServer3
. то есть взяты из их образцов кода, поэтому я думаю, что многие разработчики могут увидеть эту проблему в ближайшие дни.
Оригинальный код
используя версию пакета v4.0.2.xxxxxx. У меня
using System.IdentityModel.Tokens;
в пространстве имен.
то в Способе Конфигурации начинается как:
public void Configuration(IAppBuilder app)
{
AntiForgeryConfig.UniqueClaimTypeIdentifier = "sub";
JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary<string, string>();
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "Cookies"
});
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{ ... };
После обновления
После обновления строки конфигирования:
JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary<string, string>();
Вызывает проблемы.
Первое, что класс, по-видимому, переместился в пространство имен System.IdentityModel.Tokens.Jwt
, это не так уж плохо.
Однако теперь я получаю ошибку Object reference required for a non-static field
на JwtSecurityTokenHandler.InboundClaimTypeMap
.
Мне что-то не хватает, другая библиотека, которая требовала или что-то происходит до того, как вызывается Startup.Configuration()
, который нуждается в копании?
Ответы
Ответ 1
Когда вы идете к доктору и говорите: "всегда больно, когда я это делаю" - врач ответит "затем прекратить это делать";)
v4 → v5 по определению является нарушающим изменением. Вам нужен v5?
Сказанное - простое исследование intellisense могло бы привести к тому, что они переименовали InboundClaimTypeMap
в DefaultInboundClaimTypeMap
.
Будьте готовы к дальнейшим нарушениям на пути.
Ответ 2
Проверка доступа к токенам в OWIN несовместима с system.identitymodel v5 - вам нужно перейти на v4 - См. здесь проблему