.NET JWT使用方法示例
2024-10-07
20
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还支持更多的声明和配置选项,以满足各种身份验证和授权需求。
更新于:11天前赞一波!
相关文章
- ASP.NET Core 2.1中的ActionResult<T>
- .NET Core 3.0创建一个单独的可执行文件
- 在ASP.NET Core 2.1中使用HttpClientFactory的3种方法
- .NET Core MVC应用程序创建教程
- .NET Core中的File和PhysicalFile
- .NET Core 读取配置文件方法
- .NET Core 管道模型中间件及管道模拟实现
- ASP.NET Core多环境配置
- .NET Core 日志配置,NLog配置示例
- .NET Core SkiaSharp替代System.Drawing的用法
- .NET Core 3.X路由中间件和终结点中间件
- .Net报错Could not find a part of the path bin\roslyn\csc.exe
- IIS中.NET Core报错HTTP Error 500.31 - ANCM Failed to Find Native Dependencies
- .NET Core分部视图PartialView用法
- .NET Core 视图组件Component用法
- ASP.NET Core的三种部署方式
- .NET Core中使用System.Drawing处理图像
- .NET Core Razor Page ajax请求返回400 Bad request
- .NET Core上传文件报Access xxx.tmp is denied错误
- ASP.NET Core 使用Razor code blocks替代@helper
文章评论
评论问答