JWT.Net入门教程:5分钟学会创建和验证你的第一个JWT令牌

【免费下载链接】jwt Jwt.Net, a JWT (JSON Web Token) implementation for .NET 【免费下载链接】jwt 项目地址: https://gitcode.com/gh_mirrors/jwt1/jwt

JWT.Net是一个专为.NET平台设计的JSON Web Token(JWT)实现库,它支持生成和验证符合RFC7519标准的JWT令牌。无论你是构建API认证系统还是需要安全的数据传输机制,这个轻量级库都能帮助你快速实现JWT功能。

🚀 快速安装JWT.Net

要开始使用JWT.Net,最简单的方式是通过NuGet包管理器安装核心库。在你的.NET项目中执行以下命令:

Install-Package JWT

或者使用.NET CLI:

dotnet add package JWT

如果你需要在ASP.NET Core应用中集成JWT认证,可以安装ASP.NET扩展包:

dotnet add package JWT.Extensions.AspNetCore

🔑 创建你的第一个JWT令牌

创建JWT令牌只需三步:准备载荷数据、配置加密算法、调用编码方法。以下是一个基础示例:

var payload = new Dictionary<string, object>
{
    { "sub", "1234567890" },
    { "name", "John Doe" },
    { "exp", DateTimeOffset.UtcNow.AddHours(1).ToUnixTimeSeconds() }
};

var secret = "your-256-bit-secret"; // 实际应用中使用强密钥并安全存储
IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
IJsonSerializer serializer = new JsonNetSerializer();
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();

IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);
var token = encoder.Encode(payload, secret);

这段代码会生成一个有效期为1小时的JWT令牌,包含用户ID、姓名等基本信息。

🔍 解析和验证JWT令牌

收到JWT令牌后,需要对其进行解析和验证以确保安全性。以下是验证令牌的基本方法:

IJwtDecoder decoder = new JwtDecoder(serializer, new JwtValidator(serializer, new UtcDateTimeProvider()), urlEncoder, algorithm);
try
{
    var json = decoder.Decode(token, secret, verify: true);
    var payload = decoder.DecodeToObject<IDictionary<string, object>>(token, secret);
    
    // 验证成功,处理载荷数据
    var userId = payload["sub"].ToString();
    var userName = payload["name"].ToString();
}
catch (TokenExpiredException)
{
    // 令牌已过期
}
catch (SignatureVerificationException)
{
    // 签名验证失败
}

JWT.Net会自动验证令牌的签名、过期时间(exp)和生效时间(nbf)等标准声明。

⚙️ 自定义验证参数

如果需要调整验证规则(例如允许一定的时间偏差),可以使用ValidationParameters类:

var validationParameters = new ValidationParameters
{
    ValidateExpiration = true,
    ValidateNotBefore = true,
    ClockSkew = TimeSpan.FromSeconds(30) // 允许30秒的时间偏差
};

var validator = new JwtValidator(serializer, new UtcDateTimeProvider(), validationParameters);
IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder, algorithm);

🌐 在ASP.NET Core中集成JWT认证

对于ASP.NET Core应用,可以通过扩展包快速配置JWT认证中间件:

services.AddAuthentication(JwtAuthenticationDefaults.AuthenticationScheme)
        .AddJwt(options =>
        {
            options.RequireHttpsMetadata = false; // 开发环境可设为false
            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuerSigningKey = true,
                IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(secret)),
                ValidateIssuer = false,
                ValidateAudience = false
            };
        });

📝 核心组件说明

JWT.Net的核心功能由以下关键组件提供:

💡 使用建议

  1. 密钥安全:始终使用足够强度的密钥(HMAC-SHA256至少需要256位密钥)并安全存储
  2. 令牌有效期:设置合理的过期时间(exp),建议不超过24小时
  3. 算法选择:优先使用非对称算法(如RSA)进行签名验证
  4. 完整验证:生产环境中务必验证所有标准声明和签名

通过JWT.Net,你可以在几分钟内为你的.NET应用添加安全可靠的JWT认证功能。无论是构建API服务还是桌面应用,这个库都能提供简单而强大的令牌处理能力。

要获取更多示例和详细文档,可以查看项目源代码中的测试用例,如tests/JWT.Tests.Common/JwtBuilderEndToEndTests.cs

【免费下载链接】jwt Jwt.Net, a JWT (JSON Web Token) implementation for .NET 【免费下载链接】jwt 项目地址: https://gitcode.com/gh_mirrors/jwt1/jwt

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐