如何在.NET 3.5中使用System.IdentityModel.Tokens.Jwt 5.2.1?

时间:2018-04-23 08:35:07

标签: asp.net .net-3.5 jwt .net-4.5

我有项目,我想从请求中验证令牌。我的项目的.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令牌吗?

3 个答案:

答案 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 内容。

https://www.nuget.org/packages/JWT