.net 7 Minimal Api Jwt Authentication

5 min read Jun 03, 2024
.net 7 Minimal Api Jwt Authentication

Authentification JWT avec Minimal API dans .NET 7

Introduction

.NET 7 a introduit Minimal API, une nouvelle façon de construire des API web légères et performantes. Cette approche permet de créer des API avec un minimum de code, en s'appuyant sur les fonctionnalités de base de .NET. L'authentification est un élément crucial pour sécuriser vos API, et JWT (JSON Web Token) est un standard largement utilisé pour ce faire.

Dans cet article, nous allons explorer comment implémenter l'authentification JWT avec Minimal API dans .NET 7. Nous allons aborder les étapes clés, du setup de l'infrastructure JWT à la validation des tokens dans vos endpoints.

Configuration de l'authentification JWT

  1. Installation des packages NuGet: Commencez par installer les packages nécessaires pour gérer les tokens JWT. Vous aurez besoin de Microsoft.AspNetCore.Authentication.JwtBearer pour l'authentification basée sur JWT et System.IdentityModel.Tokens.Jwt pour la manipulation des tokens.

  2. Configuration du service d'authentification: Dans votre programme principal, configurez le service d'authentification JWT. Vous devez définir la clé secrète utilisée pour signer les tokens, le schéma d'authentification et la validation des tokens.

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuerSigningKey = true,
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("VotreCleSecrete")),
            ValidateIssuer = false,
            ValidateAudience = false
        };
    });

Création et validation de tokens

  1. Création de tokens: Pour créer un token JWT, vous devez définir les informations à inclure dans le payload du token, telles que l'identifiant de l'utilisateur, le rôle, la date d'expiration, etc. Utilisez la classe JwtSecurityTokenHandler pour créer le token.
var tokenHandler = new JwtSecurityTokenHandler();
var tokenDescriptor = new SecurityTokenDescriptor
{
    Subject = new ClaimsIdentity(new Claim[]
    {
        new Claim(ClaimTypes.NameIdentifier, "Utilisateur1"),
        new Claim(ClaimTypes.Role, "Administrateur")
    }),
    Expires = DateTime.UtcNow.AddMinutes(30),
    SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes("VotreCleSecrete")), SecurityAlgorithms.HmacSha256)
};

var token = tokenHandler.CreateToken(tokenDescriptor);
var jwtToken = tokenHandler.WriteToken(token);
  1. Validation des tokens: Pour valider un token JWT, utilisez la méthode AuthenticateAsync de l'objet HttpContext. Cette méthode vérifiera si le token est valide et l'attache à l'objet HttpContext.
[Authorize]
app.MapGet("/api/secure", async (HttpContext context) =>
{
    var user = context.User;
    // ...
});

Conclusion

L'authentification JWT avec Minimal API dans .NET 7 offre une approche simple et efficace pour sécuriser vos API web. La configuration et l'utilisation de JWT sont simplifiées grâce aux outils et aux fonctionnalités intégrées à .NET. En suivant les étapes décrites ci-dessus, vous pouvez facilement implémenter une authentification JWT robuste dans vos applications .NET.

Conseils supplémentaires

  • Gestion des rôles: Vous pouvez utiliser les revendications (Claims) dans le token pour implémenter la gestion des rôles et autoriser l'accès aux ressources en fonction du rôle de l'utilisateur.
  • Sécurité de la clé secrète: Il est crucial de stocker votre clé secrète en toute sécurité et de ne jamais la partager publiquement. Utilisez des variables d'environnement ou un service de gestion de secrets pour stocker la clé de manière sécurisée.
  • Expiration des tokens: Définissez une durée d'expiration pour vos tokens pour minimiser les risques de sécurité.

N'oubliez pas que la sécurité est primordiale, assurez-vous de suivre les meilleures pratiques pour sécuriser votre application web et vos API.

Featured Posts