.net 6 Web Api Jwt Authentication

4 min read Jun 04, 2024
.net 6 Web Api Jwt Authentication

Authentification JWT avec ASP.NET 6 Web API

Introduction

L'authentification JWT (JSON Web Token) est une approche largement utilisée pour sécuriser les applications web, en particulier les API REST. Cette méthode permet de vérifier l'identité des utilisateurs et de contrôler l'accès aux ressources. Dans cet article, nous allons explorer l'implémentation de l'authentification JWT avec ASP.NET 6 Web API.

Configuration de l'application ASP.NET 6

Commencez par créer un nouveau projet Web API ASP.NET 6. Dans le fichier Program.cs, configurez les services pour l'authentification JWT.

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuerSigningKey = true,
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"])),
            ValidateIssuer = true,
            ValidateAudience = true,
            ValidIssuer = Configuration["Jwt:Issuer"],
            ValidAudience = Configuration["Jwt:Audience"]
        };
    });

Ce code configure le middleware d'authentification JWT avec les paramètres suivants :

  • IssuerSigningKey: Clée secrète utilisée pour signer et vérifier les jetons JWT.
  • ValidIssuer: Nom du serveur qui émet les jetons.
  • ValidAudience: Nom du client qui peut recevoir les jetons.

Création d'un contrôleur sécurisé

Pour sécuriser un contrôleur, utilisez l'attribut Authorize sur la classe du contrôleur ou sur les méthodes spécifiques.

[Authorize]
public class WeatherForecastController : ControllerBase
{
    // ...
}

Désormais, seuls les utilisateurs authentifiés avec un jeton JWT valide peuvent accéder aux méthodes de ce contrôleur.

Génération de jetons JWT

Pour générer un jeton JWT, utilisez la classe JwtSecurityTokenHandler.

var claims = new[]
{
    new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
    new Claim(ClaimTypes.Name, user.Username)
};

var token = new JwtSecurityToken(
    issuer: Configuration["Jwt:Issuer"],
    audience: Configuration["Jwt:Audience"],
    claims: claims,
    expires: DateTime.Now.AddMinutes(30),
    signingCredentials: new SigningCredentials(
        new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"])),
        SecurityAlgorithms.HmacSha256
    )
);

var jwt = new JwtSecurityTokenHandler().WriteToken(token);

Ce code génère un jeton JWT contenant les informations de l'utilisateur (Id, Username) et une date d'expiration de 30 minutes.

Consommation des jetons JWT

Les applications clientes doivent envoyer le jeton JWT dans l'en-tête d'autorisation de chaque requête API.

// ...
var request = new HttpRequestMessage(HttpMethod.Get, "https://api.example.com/weather");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
// ...

Conclusion

L'authentification JWT est une solution puissante pour sécuriser les API ASP.NET 6. Cette méthode offre une manière flexible et standardisée de valider les utilisateurs et de contrôler l'accès aux ressources. En utilisant les techniques décrites dans cet article, vous pouvez facilement intégrer l'authentification JWT dans votre application ASP.NET 6 Web API.

Featured Posts