Пространства имен для проверки подлинности JWT.NET: система против Microsoft
Я пытаюсь использовать JWT для аутентификации приложения Node в веб-API ASP.NET.
В ASP.NET я использую .NET 4.5.1 и пакет nuget System.IdentityModel.Tokens.Jwt
5.0.0
Я не понимаю, почему пространства имен смешиваются между Microsoft
и System
.
Например:
var tokenReader = new JwtSecurityTokenHandler();
tokenReader.ValidateToken(token,
new TokenValidationParameters()
{
ValidateAudience = false
},
out validatedToken);
Основной JwtSecurityTokenHandler
находится в пространстве имен System.IdentityModel.Tokens.Jwt
, но класс TokenValidationParameters
и его зависимости находятся в пространстве имен Microsoft.IdentityModel.Tokens
и, возможно, сталкиваются с аналогичными классами в пространстве имен System.IdentityModel.Tokens
.
Это по дизайну или это возможный признак несоответствия версии где-то еще?
Ответы
Ответ 1
Если вы посмотрите на зависимость для
nuget System.IdentityModel.Tokens.Jwt 4.0.2
vs
nuget System.IdentityModel.Tokens.Jwt 5.0
вы увидите, что 5.0 имеет зависимость от
Зависимости
.NETFramework 4.5.1
Microsoft.IdentityModel.Tokens( >= 5.0.0)
что 4.0 не было. Фактически, предыдущей версии не было.
Microsoft реструктурирует свои фреймворки, чтобы быть более легкими. В рамках размера ASP.NET у вас будет много функциональных сокращений.
Чтобы сделать WIF более легким, оставив обратную совместимость, было принято решение удалить избыточную функциональность из таких библиотек, как System.IdentityModel.Tokens.Jwt
больше не зависит от System.IdentityModel.Tokens
, а вместо этого - от Microsoft.IdentityModel.Tokens
. Одним из неудачных результатов является то, что оба слоя выставляют одни и те же методы.
Ответ 2
В этих случаях, когда вы экземпляр, вы должны предоставить все пространство имен, чтобы сообщить компилятору, какой класс и пространство имен вы ссылаетесь. Таким образом, вы избежите конфликтов.
Microsoft.Identity устарела в NET 4.5. И вы можете увидеть больше здесь: https://social.msdn.microsoft.com/Forums/vstudio/en-US/256c6bcd-6752-4487-b2e8-6c63f4efb9e9/difference-between-microsoftidentitymodel-and-systemidentitymodel?forum=Geneva