🛡️ Fiche Authentification JWT - .NET + React

1. Objectif

2. Register - Backend (.NET)

Hachage du mot de passe
string hashedPassword = BCrypt.Net.BCrypt.HashPassword(user.Password);
        

→ On stocke hashedPassword dans MongoDB

3. Login - Backend (.NET)

Vérification et génération du token
bool isValid = BCrypt.Net.BCrypt.Verify(input.Password, user.Password);
var token = new JwtSecurityToken(
claims: claims,
expires: DateTime.Now.AddHours(1),
signingCredentials: creds
);
        

4. Configuration JWT - Middleware

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options => {
options.TokenValidationParameters = new TokenValidationParameters {
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(config["JWT_SECRET"])),
ValidateIssuer = false,
ValidateAudience = false
};
});
app.UseAuthentication();
app.UseAuthorization();
        

5. Côté Frontend (React)

Stockage du token après Login :

localStorage.setItem("token", response.token);
        

Utilisation du token pour appel API :

fetch("/api/add-word", {
method: "POST",
headers: {
"Authorization": `Bearer ${token}`,
"Content-Type": "application/json"
},
body: JSON.stringify(data)
});
        

6. Fichier .env (Backend)

JWT_SECRET=MaSuperCléUltraSecrète123
MONGO_URI=mongodb://localhost:27017/ma_base
        
builder.Configuration.AddEnvironmentVariables();
        

7. Bonnes pratiques sécurité