.NET JWT使用方法示例
2024-10-07
37
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还支持更多的声明和配置选项,以满足各种身份验证和授权需求。
更新于:1个月前赞一波!
相关文章
- .NET C# EntityFramework(EF)连接SQLite代码示例
- Sylvan.Data.Excel 性能优异的开源.NET Excel数据读取库
- ASP.NET Core 中常用的内置中间件
- .NET9 F#有什么新特性?
- .NET 开源 ORM FreeSql 使用教程
- .NET9 C# 13 有哪些新特性?
- .NET9 开始删除内置的 Swagger 支持 可使用Scalar.AspNetCore替代
- .NET 9 中System.Text.Json 的新增功能
- 什么是.NET渐进式Web应用(PWA)
- .NET开发中常见的异常报错原因和解决方法?
- .NET框架和CLR的工作原理?
- ASP.NET MVC与Web Forms的区别
- .NET C#中的IEnumerable和IEnumerator的区别
- 使用ADO.NET连接到南大通用GBase 8s数据库
- 鸿蒙OpenHarmony系统可以运行跨平台的.NET Core吗?
- ASP.NET Core使用partial标签报错
- .NET 9 即将推出的功能Task.WhenEach
- .NET 使用HttpClientFactory+Polly替代直接使用HttpClient
- .NET Framework被淘汰了吗?
- 强大的 .NET Mock 框架 单元测试模拟库Moq使用教程
文章评论
评论问答