.net Jwt Example

4 min read Jun 04, 2024
.net Jwt Example

Introduction à l'utilisation de JWT avec .NET

Le JSON Web Token (JWT) est un standard industriel ouvert pour la transmission d'informations sécurisées entre les parties. Il est largement utilisé dans les applications web pour l'authentification et l'autorisation des utilisateurs. Dans cet article, nous allons explorer un exemple simple d'utilisation de JWT avec .NET pour comprendre comment il fonctionne et comment vous pouvez l'intégrer à vos propres applications.

Qu'est-ce qu'un JWT ?

Un JWT est un jeton compact et auto-contenu qui contient une charge utile chiffrée. Il est composé de trois parties séparées par des points (".") :

  1. En-tête (Header) : Contient le type du jeton (JWT) et l'algorithme de signature utilisé.
  2. Charge utile (Payload) : Contient les informations sur l'utilisateur authentifié, telles que l'identifiant, le nom d'utilisateur, les rôles, etc.
  3. Signature (Signature) : Assure l'intégrité du jeton et la validité de son contenu.

Exemple d'utilisation de JWT avec .NET

Prenons l'exemple d'une API REST qui utilise JWT pour l'authentification des utilisateurs.

1. Générer un JWT:

using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;

// Clé secrète pour la signature du JWT
var secretKey = "your_secret_key";

// Création des revendications (claims) pour l'utilisateur
var claims = new List
{
    new Claim(ClaimTypes.NameIdentifier, "user123"),
    new Claim(ClaimTypes.Name, "John Doe"),
    new Claim(ClaimTypes.Role, "Admin")
};

// Création du JWT
var tokenHandler = new JwtSecurityTokenHandler();
var tokenDescriptor = new SecurityTokenDescriptor
{
    Subject = new ClaimsIdentity(claims),
    Expires = DateTime.UtcNow.AddMinutes(30),
    SigningCredentials = new SigningCredentials(
        new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey)),
        SecurityAlgorithms.HmacSha256Signature)
};
var token = tokenHandler.CreateToken(tokenDescriptor);
var jwt = tokenHandler.WriteToken(token);

// Retourner le JWT au client
return jwt;

2. Vérifier le JWT:

using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
using System.Text;

// Clé secrète pour la signature du JWT
var secretKey = "your_secret_key";

// Récupérer le JWT du client
var jwt = Request.Headers["Authorization"].ToString().Replace("Bearer ", "");

// Vérification du JWT
var tokenHandler = new JwtSecurityTokenHandler();
var validationParameters = new TokenValidationParameters
{
    ValidateIssuerSigningKey = true,
    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey)),
    ValidateIssuer = false,
    ValidateAudience = false,
    ValidateLifetime = true,
    ClockSkew = TimeSpan.Zero
};
var principal = tokenHandler.ValidateToken(jwt, validationParameters, out SecurityToken securityToken);

// Vérifier les revendications (claims)
var userId = principal.FindFirstValue(ClaimTypes.NameIdentifier);
var username = principal.FindFirstValue(ClaimTypes.Name);
var roles = principal.FindFirstValue(ClaimTypes.Role);

// Accéder aux ressources en fonction des rôles de l'utilisateur
if (roles == "Admin")
{
    // Autoriser l'accès aux ressources d'administrateur
}

Conclusion

L'utilisation de JWT est un moyen simple et efficace d'assurer la sécurité et l'authentification dans vos applications .NET. Ce n'est qu'un exemple basique, et il existe de nombreuses autres fonctionnalités et options disponibles avec JWT, telles que la gestion des audiences, les revendications personnalisées, etc. N'hésitez pas à explorer les possibilités de JWT pour améliorer la sécurité et la fiabilité de vos applications.

Featured Posts