如何在 .NET 3.5 中使用 System.IdentityModel.Tokens.Jwt 5.2.1?
Posted
技术标签:
【中文标题】如何在 .NET 3.5 中使用 System.IdentityModel.Tokens.Jwt 5.2.1?【英文标题】:How to use System.IdentityModel.Tokens.Jwt 5.2.1 in .NET 3.5? 【发布时间】:2018-10-03 05:43:09 【问题描述】:我有一个项目,我想从请求中验证令牌。我项目的 .NETFramework 版本是 3.5。我正在尝试在我的项目中使用以下代码和这些代码,我已在另一个项目中使用来验证 .NETFramework 版本为 4.5.2 的令牌。
using Microsoft.IdentityModel.Tokens;
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TokenValidator
public class TokenValidator
public static bool IsTokenValid(string token, string secretKey)
string tokenPGID;
JwtSecurityToken validatedToken;
try
validatedToken = ValidateToken(token, secretKey) as JwtSecurityToken;
return true;
catch (Exception)
return false;
private static SecurityToken ValidateToken(string token, string secretKey)
var handler = new JwtSecurityTokenHandler();
var tokenS = handler.ReadToken(token) as JwtSecurityToken;
TokenValidationParameters tokenValidationParameters = new TokenValidationParameters
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey)),
RequireExpirationTime = true,
ValidateLifetime = true,
ValidateAudience = false,
ValidateActor = false,
ValidateIssuer = false
;
SecurityToken securityToken = new JwtSecurityToken();
handler.ValidateToken(token, tokenValidationParameters, out securityToken);
return securityToken;
但是,我的项目出现以下错误:
错误无法安装包'System.IdentityModel.Tokens.Jwt 5.2.1'。您正在尝试将此包安装到以“.NETFramework,Version=v3.5”为目标的项目中,但该包不包含 任何与其兼容的程序集引用或内容文件 框架。如需更多信息,请联系包作者。
有没有办法在 .NETFramework 3.5 的项目中验证 JWT 令牌意味着我应该使用哪个版本的包来兼容 .NET 3.5?
还有其他方法可以在 .NET 3.5 中验证 JWT 令牌吗?
【问题讨论】:
System.IdentityModel.Tokens.Jwt version >= 5.0 depend on .NET Framework >= 4.5。尝试较低的版本,例如 4.4。 4.4 不工作。我尝试使用 NuGet 安装该软件包 【参考方案1】:我查看了@NicoPaez 建议的 Auth0 库,但它已被弃用:
建议用户切换到此库所基于的 JWT.NET 尽快。
能够轻松地将 JWT.NET 库转储到我的代码中,这是旧的 .Net Framework 3.5 东西。
https://www.nuget.org/packages/JWT
【讨论】:
【参考方案2】:我认为 Microsoft 官方不支持为 .Net 3.5 生成 JWT,但您可以使用第三方库,例如 Auth0 开发的库:https://libraries.io/github/auth0/jwt
【讨论】:
【参考方案3】:在我的项目中,我使用 netcoreapp3.0,为了安装 System.IdentityModel.Tokens.Jwt,我做了以下步骤:
1) Install-Package System.IdentityModel.Tokens.Jwt -Version 4.0.4.402070948
2) See there a new version 然后更新包 安装包 System.IdentityModel.Tokens.Jwt -Version 5.5.0 然后包 Microsoft.IdentityModel.Tokens 和 System.IdentityModel.Tokens.Jwt 将可用。
【讨论】:
以上是关于如何在 .NET 3.5 中使用 System.IdentityModel.Tokens.Jwt 5.2.1?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 C# 在 ASP.NET 3.5 中动态设置“application/ld+json”Schema.org 元数据
如何在 VS2010 中使用 asp.net 重新配置和编译网站到 Framework 3.5?