[英]Namespaces for .NET JWT token validation: System vs. Microsoft
我正在嘗試使用JWT來驗證ASP.NET Web API的Node應用程序。
在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
命名空間中的類似類沖突。
這是設計還是這可能是其他地方版本不匹配的標志?
如果你看一下依賴關系
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沒有。 事實上,沒有以前的版本。
微軟正在重新構建他們的框架,使其更輕量級。 在ASP.NET的大小框架中,您將擁有許多功能冗余。
為了使WIF更輕,同時保持向后兼容,決定從System.IdentityModel.Tokens.Jwt
庫中刪除冗余功能,不再依賴於System.IdentityModel.Tokens
,而是依賴於Microsoft.IdentityModel.Tokens
。 不幸的結果之一是兩層都暴露了相同的方法。
在這些情況下,當您實例時,您必須提供整個命名空間,以通知編譯器您正在引用哪個類和命名空間。 所以,你會避免沖突。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.