.net Core Jwt Refresh Token Example

6 min read Jun 03, 2024
.net Core Jwt Refresh Token Example

Exemple de jeton d'actualisation JWT avec .NET Core

Introduction

Dans le développement d'applications web modernes, la sécurité est primordiale. L'utilisation de JSON Web Tokens (JWT) est devenue une pratique courante pour l'authentification et l'autorisation des utilisateurs. Cependant, les JWT ont une durée de vie limitée, ce qui nécessite un mécanisme de renouvellement pour maintenir la session utilisateur active. Le jeton d'actualisation est une solution courante pour gérer ce besoin.

Cet article vous guidera à travers un exemple pratique d'utilisation de jetons d'actualisation JWT avec .NET Core. Nous allons illustrer la mise en place d'un système d'authentification sécurisé avec une durée de vie limitée pour les JWT et un mécanisme de renouvellement via un jeton d'actualisation.

Configuration du projet .NET Core

Commencez par créer un nouveau projet .NET Core avec le modèle API. Ensuite, installez les packages NuGet suivants:

Microsoft.AspNetCore.Authentication.JwtBearer
Microsoft.AspNetCore.Identity.EntityFrameworkCore

Implémentation du JWT

1. Génération du jeton d'accès:

Utilisez la classe JwtSecurityTokenHandler pour générer un jeton d'accès avec une durée de vie limitée.

2. Génération du jeton d'actualisation:

Créez un jeton d'actualisation avec une durée de vie plus longue que le jeton d'accès. Ce jeton ne contiendra pas d'informations sensibles, il servira uniquement à renouveler le jeton d'accès.

3. Stockage du jeton d'actualisation:

Le jeton d'actualisation doit être stocké en toute sécurité, par exemple dans une base de données ou un cache. Vous pouvez utiliser un cookie sécurisé ou un stockage local pour le conserver côté client.

Mécanisme de renouvellement du jeton

1. Validation du jeton d'actualisation:

Lorsque le jeton d'accès expire, le client doit envoyer une requête avec le jeton d'actualisation. Vérifiez la validité du jeton d'actualisation et sa présence dans votre stockage.

2. Génération d'un nouveau jeton d'accès:

Si le jeton d'actualisation est valide, générez un nouveau jeton d'accès avec une durée de vie limitée et renvoyez-le au client.

3. Mise à jour du jeton d'actualisation:

Optionnellement, vous pouvez mettre à jour le jeton d'actualisation avec une nouvelle durée de vie pour éviter des renouvellements trop fréquents.

Exemple de code

// Configuration du JWT
var tokenValidationParameters = new TokenValidationParameters
{
    // ...
};

// Configuration du service d'authentification JWT
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = tokenValidationParameters;
        // ...
    });

// Contrôleur pour la génération de jetons
[ApiController]
[Route("api/[controller]")]
public class AuthController : ControllerBase
{
    [HttpPost("login")]
    public async Task Login([FromBody] LoginModel model)
    {
        // Vérification des informations d'identification
        // ...

        // Génération du jeton d'accès
        var accessToken = GenerateAccessToken(user);

        // Génération du jeton d'actualisation
        var refreshToken = GenerateRefreshToken();

        // Stockage du jeton d'actualisation
        // ...

        return Ok(new
        {
            accessToken,
            refreshToken
        });
    }

    [HttpPost("refresh")]
    public async Task RefreshToken([FromBody] RefreshTokenModel model)
    {
        // Validation du jeton d'actualisation
        // ...

        // Génération d'un nouveau jeton d'accès
        var accessToken = GenerateAccessToken(user);

        // Mise à jour du jeton d'actualisation (optionnel)
        // ...

        return Ok(new
        {
            accessToken,
            // refreshToken (optionnel)
        });
    }
}

Conclusion

L'utilisation de jetons d'actualisation JWT avec .NET Core permet de créer un système d'authentification robuste et sécurisé. En combinant un jeton d'accès à durée limitée et un jeton d'actualisation à durée de vie plus longue, vous pouvez maintenir les sessions utilisateur actives tout en garantissant la sécurité de vos applications.

N'oubliez pas de mettre en place un mécanisme de stockage et de validation sécurisé pour les jetons d'actualisation.

Related Post


Featured Posts