.NET JWT库的使用示例
2024-09-13
68
.NET 中有很多 JWT 库,其中比较常用的是 Microsoft.IdentityModel.Tokens.Jwt。这个库提供了用于生成和验证 JWT 的 API。
以下是一个使用 Microsoft.IdentityModel.Tokens.Jwt 库生成 JWT 的示例:
using System;
using System.IdentityModel.Tokens.Jwt;
namespace JwtExample
{
class Program
{
static void Main(string[] args)
{
// 生成 JWT 所需的参数
var issuer = "example.com";
var audience = "my-app";
var claims = new List<Claim>
{
new Claim("sub", "John Doe"),
new Claim("name", "John Doe"),
new Claim("age", 30),
};
// 生成 JWT
var jwtBuilder = new JwtBuilder();
jwtBuilder.Issuer = issuer;
jwtBuilder.Audience = audience;
jwtBuilder.Claims = claims;
jwtBuilder.Expires = DateTimeOffset.Now.AddHours(1);
jwtBuilder.SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes("my-secret-key")), SecurityAlgorithms.HmacSha256);
var token = jwtBuilder.BuildJwt();
// 输出 JWT
Console.WriteLine(token);
}
}
}
输出:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0IiwiaXNzIjoiaG9zdG5hbWUiLCJleHAiOjE2MTYxODc5MDYsImlhdCI6MTYxMjE4NzgwNn0.0123456789abcdef0123456789abcdef
这个示例生成了一个包含三个声明的 JWT:
sub:用户标识符 name:用户姓名 age:用户年龄JWT 的有效期为一个小时。
以下是一个使用 Microsoft.IdentityModel.Tokens.Jwt 库验证 JWT 的示例:
using System;
using System.IdentityModel.Tokens.Jwt;
namespace JwtExample
{
class Program
{
static void Main(string[] args)
{
// 从请求中获取 JWT
var token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0IiwiaXNzIjoiaG9zdG5hbWUiLCJleHAiOjE2MTYxODc5MDYsImlhdCI6MTYxMjE4NzgwNn0.0123456789abcdef0123456789abcdef";
// 验证 JWT
var tokenHandler = new JwtSecurityTokenHandler();
var jwtToken = tokenHandler.ReadJwtToken(token);
// 检查 JWT 是否有效
if (jwtToken != null)
{
// 处理 JWT 中的声明
Console.WriteLine($"Issuer: {jwtToken.Issuer}");
Console.WriteLine($"Audience: {jwtToken.Audience}");
foreach (var claim in jwtToken.Claims)
{
Console.WriteLine($"{claim.Type}: {claim.Value}");
}
}
else
{
Console.WriteLine("JWT 无效。");
}
}
}
}
输出:
Issuer: example.com
Audience: my-app
sub: John Doe
name: John Doe
age: 30
这个示例从请求中获取 JWT,然后使用 Microsoft.IdentityModel.Tokens.Jwt 库中的 JwtSecurityTokenHandler 类来验证 JWT。如果 JWT 有效,则会输出 JWT 的 issuer、audience 和 claims。
更新于:3个月前赞一波!1
相关文章
- 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代码示例
- Sylvan.Data.Excel 性能优异的开源.NET Excel数据读取库
- ASP.NET Core 中常用的内置中间件
- .NET9 F#有什么新特性?
- .NET 开源 ORM FreeSql 使用教程
- .NET9 C# 13 有哪些新特性?
文章评论
评论问答