.net Framework 4.8 Jwt Authentication

5 min read Jun 03, 2024
.net Framework 4.8 Jwt Authentication

Authentification JWT avec .NET Framework 4.8

Introduction

L'authentification JWT (JSON Web Token) est devenue une norme de facto pour l'authentification d'applications web et API. Elle offre une manière sécurisée et flexible de valider l'identité des utilisateurs et de gérer les autorisations. Dans cet article, nous allons explorer comment implémenter l'authentification JWT dans une application .NET Framework 4.8.

Qu'est-ce que JWT ?

JWT est un standard ouvert pour la transmission d'informations sécurisées entre deux parties. Un token JWT est un objet JSON qui contient des données codées et signées numériquement. Il est généralement utilisé pour l'authentification et l'autorisation, permettant aux applications de vérifier l'identité d'un utilisateur et de déterminer les ressources auxquelles il a accès.

Mise en place de l'authentification JWT dans .NET Framework 4.8

1. Installation des packages NuGet

Pour commencer, nous devons installer les packages NuGet nécessaires.

Install-Package System.IdentityModel.Tokens.Jwt

2. Configuration de l'émission des tokens

  • Définir une clé secrète pour la signature du token.
  • Créer un objet JwtSecurityTokenHandler pour gérer la création et la validation des tokens.
  • Définir les revendications à inclure dans le token, telles que l'identifiant de l'utilisateur, le rôle et la date d'expiration.
public class TokenService
{
    private readonly string _secretKey;

    public TokenService(string secretKey)
    {
        _secretKey = secretKey;
    }

    public string GenerateToken(string userId, string role)
    {
        var claims = new[]
        {
            new Claim(JwtRegisteredClaimNames.Sub, userId),
            new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
            new Claim(ClaimTypes.Role, role)
        };

        var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_secretKey));

        var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

        var token = new JwtSecurityToken(
            issuer: "VotreServeur",
            audience: "VotreApplication",
            claims: claims,
            expires: DateTime.UtcNow.AddMinutes(30),
            signingCredentials: creds
        );

        return new JwtSecurityTokenHandler().WriteToken(token);
    }
}

3. Validation des tokens

  • Définir la clé secrète utilisée pour signer le token.
  • Vérifier la validité du token, y compris la date d'expiration.
  • Extraire les revendications du token pour déterminer les autorisations de l'utilisateur.
public class TokenValidator
{
    private readonly string _secretKey;

    public TokenValidator(string secretKey)
    {
        _secretKey = secretKey;
    }

    public bool ValidateToken(string token)
    {
        var tokenHandler = new JwtSecurityTokenHandler();
        try
        {
            var validationParameters = new TokenValidationParameters
            {
                ValidateIssuerSigningKey = true,
                IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_secretKey)),
                ValidateIssuer = false,
                ValidateAudience = false,
                ValidateLifetime = true,
                ClockSkew = TimeSpan.Zero
            };

            var validatedToken = tokenHandler.ValidateToken(token, validationParameters, out SecurityToken validatedSecurityToken);

            return true;
        }
        catch (Exception)
        {
            return false;
        }
    }
}

4. Utilisation des tokens dans l'application

  • Authentification: L'utilisateur fournit ses identifiants (nom d'utilisateur et mot de passe). L'application génère un JWT et le renvoie au client.
  • Autorisation: Le client envoie le JWT avec chaque requête. L'application valide le token et vérifie les revendications pour déterminer les autorisations de l'utilisateur.

Conclusion

L'authentification JWT est une solution puissante et flexible pour sécuriser vos applications .NET Framework 4.8. En suivant les étapes décrites ci-dessus, vous pouvez implémenter une solution d'authentification JWT qui répond aux besoins de sécurité de votre application. N'oubliez pas de choisir une clé secrète forte et de protéger les informations sensibles pour assurer la sécurité de votre système.

Featured Posts