我有项目,我想从请求中验证令牌。我的项目的.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; Identity.IdentityModel.Tokens.Jwt 5.2.1&#39 ;.您正在尝试将此软件包安装到针对' .NETFramework,Version = v3.5'的项目中,但该软件包不包含 任何与之兼容的程序集引用或内容文件 框架。有关更多信息,请与软件包作者联系。
有没有办法在.NETFramework 3.5的项目中验证JWT令牌,这意味着我应该使用哪个版本的软件包与.NET 3.5兼容?
还有其他方法可以在.NET 3.5中验证JWT令牌吗?
答案 0 :(得分:0)
在我的项目中,我使用netcoreapp3.0,并安装System.IdentityModel.Tokens.Jwt,然后执行下一步:
1)安装软件包System.IdentityModel.Tokens.Jwt-版本4.0.4.402070948
2)See there a new version,然后更新软件包 安装包System.IdentityModel.Tokens.Jwt-版本5.5.0 然后,软件包 Microsoft.IdentityModel.Tokens 和 System.IdentityModel.Tokens.Jwt 将可用。
答案 1 :(得分:0)
我认为没有Microsoft官方支持来为.Net 3.5生成JWT,但是您可以使用第三方库,如Auth0开发的库:https://libraries.io/github/auth0/jwt
答案 2 :(得分:0)
我查看了@NicoPaez 建议的 Auth0 库,但它已被弃用:
<块引用>建议用户切换到该库所基于的 JWT.NET 尽快。
能够轻松地将 JWT.NET 库转储到我的代码中,这是旧的 .Net Framework 3.5 内容。