返回
.NET JWT使用方法示例
2023-08-31
1023 0JSON 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还支持更多的声明和配置选项,以满足各种身份验证和授权需求。
您可能感兴趣:
阿里云 云服务器 99元1年 2核2G 3M固定带宽 续费与新购同价
领取 通义灵码 免费使用资格 兼容 Visual Studio Code、Visual Studio、JetBrains IDEs 等主流编程工具, 为你提供高效、流畅、舒心的智能编码体验!
网友点评
提交
相关阅读
.NET C#如何进行单元测试和集成测试?
.NET attribute 验证两个字段相同
AutoUpdater.NET实现.NET应用自动更新
.NET官方日志库Microsoft.Extensions.Logging用法
解决.NET JAVA PHP中写入及读取memcache中数据不一致的方法
.NET C#委托类型Func和Action用法
使用.NET SDK Betalgo调用OpenAI ChatGPT API 代码示例
ASP.NET Core实现多语言本地化Web应用程序
.NET Blazor 2024年发展趋势
MiniAPI参数绑定 服务注入 响应输出使用示例