.net Core Jwt Authentication Example

5 min read Jun 03, 2024
.net Core Jwt Authentication Example

Authentification JWT avec .NET Core : Un exemple pratique

Introduction

L'authentification JWT (JSON Web Token) est une méthode courante et efficace pour sécuriser les applications web. Elle permet de valider l'identité d'un utilisateur et de contrôler son accès aux ressources. Dans ce tutoriel, nous allons vous guider à travers un exemple pratique d'authentification JWT avec .NET Core.

Configuration de l'application .NET Core

Commencez par créer une nouvelle application web .NET Core. Vous pouvez utiliser Visual Studio ou l'interface de ligne de commande.

  1. Création du projet:

    dotnet new webapi -o MyJwtApp
    cd MyJwtApp
    
  2. Installation des packages nécessaires:

    dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
    dotnet add package Microsoft.IdentityModel.Tokens
    

Génération des clés secrètes et du jeton JWT

  1. Création d'une clé secrète:

    public static class SecretKey
    {
        public static string Key = "VotreCléSecrèteTrèsLongueEtAléatoire";
    }
    

    Remplacez "VotreCléSecrèteTrèsLongueEtAléatoire" par une clé secrète réellement aléatoire et complexe.

  2. Configuration des options JWT:

    using Microsoft.AspNetCore.Authentication.JwtBearer;
    using Microsoft.IdentityModel.Tokens;
    
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(SecretKey.Key)),
                    ValidateIssuer = false,
                    ValidateAudience = false
                };
            });
    }
    

Implémentation du contrôleur sécurisé

  1. Définition d'un contrôleur sécurisé:

    [Authorize]
    [ApiController]
    [Route("api/[controller]")]
    public class SecureController : ControllerBase
    {
        [HttpGet]
        public IActionResult GetSecretData()
        {
            return Ok("Données secrètes accessibles uniquement aux utilisateurs authentifiés.");
        }
    }
    

    L'attribut [Authorize] protège la méthode GetSecretData et ne la rend accessible que pour les utilisateurs authentifiés.

Génération du jeton JWT

  1. Définition d'une classe pour les revendications du jeton:

    public class UserClaims
    {
        public string UserId { get; set; }
        public string Role { get; set; }
    }
    
  2. Création d'une méthode pour générer le jeton:

    using System.IdentityModel.Tokens.Jwt;
    using System.Security.Claims;
    
    public class JwtTokenService
    {
        public string GenerateToken(UserClaims userClaims)
        {
            var claims = new[]
            {
                new Claim(ClaimTypes.NameIdentifier, userClaims.UserId),
                new Claim(ClaimTypes.Role, userClaims.Role)
            };
    
            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(SecretKey.Key));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
    
            var token = new JwtSecurityToken(
                issuer: "VotreServeur",
                audience: "VotreApplication",
                claims: claims,
                expires: DateTime.Now.AddMinutes(30),
                signingCredentials: creds
            );
    
            return new JwtSecurityTokenHandler().WriteToken(token);
        }
    }
    

Exemple d'utilisation

  1. Création d'un utilisateur fictif:

    var userClaims = new UserClaims
    {
        UserId = "12345",
        Role = "Admin"
    };
    
  2. Génération du jeton JWT:

    var jwtTokenService = new JwtTokenService();
    var token = jwtTokenService.GenerateToken(userClaims);
    
  3. Envoi du jeton au client:

    Vous pouvez renvoyer le jeton au client dans l'en-tête Authorization de la réponse HTTP.

Conclusion

Ce tutoriel vous a permis de découvrir les bases de l'authentification JWT avec .NET Core. Vous avez appris à configurer l'authentification JWT, à générer des jetons et à sécuriser un contrôleur. Vous pouvez maintenant utiliser ces connaissances pour sécuriser votre application .NET Core et contrôler l'accès aux ressources sensibles.

N'oubliez pas de remplacer les valeurs par défaut par les vôtres et de choisir une clé secrète suffisamment complexe pour garantir la sécurité de votre application.

Mots-clés

.NET Core, JWT, Authentification, Sécurité, Exemple, Token

Related Post