.NET JWT使用方法示例
2024-10-07
82
JSON Web Token(JWT)是一种用于在网络间传递声明的开放标准(RFC 7519),常用于对身份验证和授权信息进行安全传递。在.NET中,你可以使用一些库来轻松地创建和验证JWT。以下是一个简单的示例,演示如何在.NET中使用JWT:
安装JWT库
首先,你需要安装.NET中的JWT库。常见的选择包括System.IdentityModel.Tokens.Jwt。
通过NuGet包管理器控制台安装库:
Install-Package System.IdentityModel.Tokens.Jwt
生成JWT
下面是一个使用C#生成JWT的示例:
using System;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using Microsoft.IdentityModel.Tokens;
class Program
{
static void Main(string[] args)
{
var securityKey = new SymmetricSecurityKey(Convert.FromBase64String("your-secret-key"));
var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
var claims = new[]
{
new Claim(JwtRegisteredClaimNames.Sub, "your-username"),
new Claim(JwtRegisteredClaimNames.Email, "your-email@example.com"),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
};
var token = new JwtSecurityToken(
issuer: "your-issuer",
audience: "your-audience",
claims: claims,
expires: DateTime.Now.AddHours(1),
signingCredentials: credentials
);
var encodedToken = new JwtSecurityTokenHandler().WriteToken(token);
Console.WriteLine(encodedToken);
}
}
请确保替换上述代码中的密钥、用户名、电子邮件、发行者和受众等信息。
验证JWT
下面是一个使用C#验证JWT的示例:
using Microsoft.IdentityModel.Tokens;
class Program
{
static void Main(string[] args)
{
var tokenHandler = new JwtSecurityTokenHandler();
var token = "your-jwt-token";
var validationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Convert.FromBase64String("your-secret-key")),
ValidateIssuer = true,
ValidIssuer = "your-issuer",
ValidateAudience = true,
ValidAudience = "your-audience",
ValidateLifetime = true,
ClockSkew = TimeSpan.Zero // Optional: Adjust clock skew if needed
};
SecurityToken validatedToken;
var principal = tokenHandler.ValidateToken(token, validationParameters, out validatedToken);
Console.WriteLine("Token is valid.");
}
}
替换代码中的JWT令牌、密钥、发行者和受众等信息。
这个示例是一个简单的入门,实际应用中可能还需要更复杂的配置和逻辑。JWT还支持更多的声明和配置选项,以满足各种身份验证和授权需求。
更新于:3个月前赞一波!1
相关文章
- .NET C# 使用Hook钩子实现全局监听键盘和鼠标
- BotSharp 基于 .NET 平台的开源 AI 聊天机器人框架
- .NET C#连接FTP实现文件上传下载
- .NET C#中的Func、Predicate和Expression用法详解
- 5个高性能 .NET Core 图片处理库推荐
- ASP.NET如何将Views文件夹从项目分离
- .NET C# 读取编辑.AVIF图片文件
- .NET C# SkiaSharp读取.AVIF图片文件报错
- .NET开源ORM FreeSql常见问题和解决方法
- 微软于发布了.NET 9 Release Candidate 2 提高整体质量
- 分享5个开源的.NET Excel读写操作库
- ASP.NET 使用Entity Framework (EF) 创建迁移修改SQLite数据库表结构
- 如何从.NET Framework迁移到.NET Core或.NET 6/7?
- 如何优化ASP.NET Core应用的性能?
- 10款.NET开发中推荐的代码分析和质量工具
- .NET9 Blazor有哪些更新?
- 在Docker、Kubernetes环境下部署.NET应用的最佳实践
- .NET 游戏开发框架有哪些?
- PluginCore 基于 ASP.NET Core 的轻量级插件框架
- .NET C# EntityFramework(EF)连接SQLite代码示例
文章评论
评论问答