2025年4月1日 星期二 乙巳(蛇)年 正月初二 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > .net

.NET JWT库的使用示例

时间:12-20来源:作者:点击数:31

.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。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门