Petite recherche théorique
Avant de réaliser la recherche pratique je vous invite à faire une recherche théorique qui repose
sur les points suivants :
a. Définition de JWT
b. Son fonctionnement et sa structure
c. C’est quoi le Hashage / Password Hashing
Recherche Pratique : Création d’un API d’authentification
Installation des modules bcrypt et jsonwebtoken
Installation des modules bcrypt et jsonwebtoken :
Utilisez la commande npm install bcrypt jsonwebtoken pour installer ces modules dans votre projet.
Implémentation de l'authentification par e-mail et mot de passe :
Assurez-vous d'avoir une base de données pour stocker les informations des utilisateurs.
Utilisez bcrypt pour chiffrer et stocker les mots de passe des utilisateurs sous forme de hash
dans la base de données.
Lorsqu'un utilisateur tente de se connecter, comparez le hash du mot de passe entré avec le
hash stocké dans la base de données.
Utilisation des tokens d'authentification :
Utilisez jsonwebtoken pour créer des tokens d'authentification.
Lorsqu'un utilisateur se connecte avec succès, générez un token d'authentification pour cet
utilisateur et renvoyez-le en réponse.
Le token d'authentification doit être envoyé dans les requêtes ultérieures de l'utilisateur
pour authentifier ces requêtes.
Exemple d'utilisation de jsonwebtoken dans la fonction de login :
Importez le module jsonwebtoken dans votre fichier de code :
Utilisez jsonwebtoken pour générer un token d'authentification lorsqu'un utilisateur se
connecte avec succès
[Link] = (req, res, next) => {
[Link]({ email: [Link] })
.then(user => {
if (!user) {
return [Link](401).json({ error: 'Utilisateur non
trouvé !' });
}
[Link]([Link], [Link])
.then(valid => {
if (!valid) {
return [Link](401).json({ error: 'Mot de
passe incorrect !' });
}
[Link](200).json({
userId: user._id,
token: [Link](
{ userId: user._id },
'RANDOM_TOKEN_SECRET',
{ expiresIn: '24h' }
)
});
})
.catch(error => [Link](500).json({ error }));
})
.catch(error => [Link](500).json({ error }));
};
Assurez-vous de remplacer 'RANDOM_TOKEN_SECRET' par une chaîne de caractères secrète
forte pour signer les tokens d'authentification. Cette chaîne doit être gardée secrète et ne
doit pas être partagée publiquement.
Middleware d’authentification
Avant de passer aux étapes suivantes de notre TP, parlons rapidement des middlewares. Un
middleware est une fonction qui agit comme un intermédiaire entre la demande d'un utilisateur et la
réponse du serveur dans une application [Link]. Il peut être utilisé pour effectuer des tâches telles
que l'authentification, la validation des données ou le logging. Dans notre cas, nous allons créer un
middleware d'authentification appelé isAuthenticated, qui vérifie si un utilisateur est connecté avant
de lui permettre d'accéder à certaines routes. Comprendre comment les middlewares fonctionnent et
pourquoi nous les utilisons est crucial pour sécuriser notre application et garantir un accès approprié
aux données. Réfléchissons maintenant à quelques questions pour approfondir notre compréhension
de ce concept.
Création d'un middleware pour l'authentification :
Créez un dossier nommé middleware dans votre projet.
À l'intérieur, créez un fichier nommé [Link].
Copiez le code suivant dans le fichier [Link] :
Utilisation du middleware dans votre API d'authentification :
Importez le middleware isAuthenticated dans votre fichier où vous gérez les routes
d'authentification.
Utilisez isAuthenticated comme middleware pour les routes que vous souhaitez protéger avec
l'authentification.
Assurez-vous que les routes protégées par ce middleware ne peuvent être accédées que par des
utilisateurs authentifiés.