jwt基础知识详解 .net core
时间: 2024-09-26 10:07:59 浏览: 27
JWT (JSON Web Token) 是一种轻量级的身份验证协议,常用于基于HTTP的无状态API安全通信。它允许服务端生成一个包含用户信息(如身份标识、角色等)的安全令牌,并将其发送给客户端。客户端随后可以携带这个令牌进行后续请求,而服务器通过验证该令牌来确认请求者的身份。
在.NET Core中使用JWT的基本步骤如下:
1. **安装库**: 使用NuGet包管理器添加`Microsoft.AspNetCore.Authentication.JwtBearer`和`Microsoft.IdentityModel.Tokens`库。
```bash
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
dotnet add package Microsoft.IdentityModel.Tokens
```
2. **创建服务提供者**: 配置JWT发行者(通常是一个认证中间件),包括密钥、有效期和声明(claims)。
```csharp
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(configureOptions =>
{
configureOptions.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your_secret_key")),
ValidateIssuer = true,
ValidIssuer = "your_issuer",
ValidateAudience = true,
ValidAudience = "your_audience",
ClockSkew = TimeSpan.Zero // 用于处理时间差异
};
});
```
3. **授权保护**: 在需要鉴权的控制器或动作上添加 `[Authorize]` 属性。
4. **生成和验证JWT**: 使用`AuthenticationHandler`的`CreateTicketAsync()` 方法创建并返回JWT,客户端则在请求头中附带`Authorization: Bearer your_token`。
5. **解码和验证**: 在`HandleChallengeAsync()` 方法中,服务器会尝试解析并验证JWT,如果成功将返回请求主体,否则将返回错误响应。
阅读全文