当前位置:实例文章 » HTML/CSS实例» [文章].NET 5 Web API 中JWT详细教程:保护你的Web应用

.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 应用安全且可扩展。

其他信息

其他资源

Top