.NET 5 Web API 中JWT详细教程:保护你的Web应用
发布人:shili8
发布时间:2025-03-14 20:40
阅读次数:0
**.NET5 Web API 中 JWT 的详细教程**
在现代 web 应用中,安全性是一个关键问题。如何保护你的 web 应用免受未经授权的访问,是一个重要的问题。在 .NET5 Web API 中,我们可以使用 JSON Web Token (JWT) 来实现这一点。
**什么是 JWT?**
JSON Web Token (JWT) 是一种用于认证和授权的令牌格式。它是一种紧凑的、安全的和可扩展的令牌,用于在客户端和服务器之间传递信息。
**为什么使用 JWT?**
使用 JWT 有以下几个原因:
1. **安全性**: JWT 使用了加密算法(如 HMAC 和 RSA)来保护令牌的完整性和机密性。
2. **可扩展性**: JWT 可以轻松地添加新的属性和信息,适应不断变化的需求。
3. **紧凑性**: JWT 的大小非常小,可以减少网络传输的负载。
**在 .NET5 Web API 中使用 JWT**
要在 .NET5 Web API 中使用 JWT,我们需要以下几个步骤:
### 步骤1:安装 NuGet 包首先,我们需要安装 `Microsoft.AspNetCore.Authentication.JwtBearer` NuGet 包。这个包提供了对 JWT 的支持。
bashdotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
### 步骤2:配置 JWT选项在 `Startup.cs` 文件中,添加以下代码来配置 JWT选项:
csharppublic void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(options =>
{
options.DefaultScheme = "JwtBearer";
})
.AddJwtBearer("JwtBearer", options =>
{
options.TokenValidationParameters = new TokenValidationParameters {
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidIssuer = " /> ValidAudience = " /> };
});
services.AddControllers();
}
### 步骤3:保护 API在 `Startup.cs` 文件中,添加以下代码来保护 API:
csharppublic void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseAuthentication();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
### 步骤4:生成 JWT在 `Controllers` 文件夹中,添加一个新的控制器来生成 JWT:
csharp[ApiController]
[Route("api/[controller]")]
public class TokenController : ControllerBase{
private readonly IConfiguration _configuration;
public TokenController(IConfiguration configuration)
{
_configuration = configuration;
}
[HttpPost]
public IActionResult GenerateToken()
{
var token = new JwtSecurityToken(
issuer: " /> audience: " /> claims: new[]
{
new Claim("username", "john"),
new Claim("role", "admin")
},
expires: DateTime.UtcNow.AddMinutes(30),
signingCredentials: new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Jwt:Secret"])), SecurityAlgorithms.HmacSha256)
);
return Ok(new JwtSecurityTokenHandler().WriteToken(token));
}
}
### 步骤5:验证 JWT在 `Controllers` 文件夹中,添加一个新的控制器来验证 JWT:
csharp[ApiController]
[Route("api/[controller]")]
public class ValidateController : ControllerBase{
[HttpGet]
public IActionResult ValidateToken()
{
var token = Request.Headers["Authorization"].First().Split(' ').Last();
try {
var validationParameters = new TokenValidationParameters {
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidIssuer = " /> ValidAudience = " /> };
var tokenHandler = new JwtSecurityTokenHandler();
tokenHandler.ValidateToken(token, validationParameters, out _);
return Ok("Valid Token");
}
catch (SecurityTokenException)
{
return Unauthorized("Invalid Token");
}
}
}
**总结**
在本教程中,我们学习了如何在 .NET5 Web API 中使用 JWT 来保护我们的 web 应用。我们一步步地配置了 JWT选项,生成了 JWT,验证了 JWT,并保护了我们的 API。通过这些步骤,我们可以确保我们的 web 应用安全且可扩展。

