簡體   English   中英

.NET JWT令牌驗證的命名空間:System vs. Microsoft

[英]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

我不明白的是,為什么命名空間在MicrosoftSystem之間混合。

例如:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM