17.5. Authentification et autorisation dans les API NodeJS : stockage sécurisé des mots de passe

Página 103

L'authentification et l'autorisation sont des éléments fondamentaux de la sécurité dans toute application Web, y compris les API développées dans NodeJS. L'authentification est le processus de vérification de l'identité d'un utilisateur, tandis que l'autorisation est le processus de vérification de ce que l'utilisateur authentifié est autorisé à faire. Ce chapitre se concentrera sur la façon de mettre en œuvre ces deux aspects critiques dans votre API NodeJS, avec un accent particulier sur le stockage sécurisé des mots de passe.

Pour commencer, il est important de comprendre que le stockage des mots de passe en texte clair dans votre base de données est une pratique extrêmement peu sécurisée. Si un attaquant parvient à accéder à votre base de données, il aura accès à tous les mots de passe de vos utilisateurs. Pour éviter cela, il est nécessaire de chiffrer les mots de passe avant de les stocker. La manière la plus courante d'y parvenir consiste à utiliser un processus appelé « hachage ».

Le hachage est un processus qui transforme un ensemble de données en une chaîne de longueur fixe, supposée unique pour chaque ensemble de données d'entrée. Lorsqu'un utilisateur crée un compte ou modifie son mot de passe, vous devez créer un hachage du mot de passe et stocker ce hachage dans la base de données. Lorsque l'utilisateur tente de se connecter, vous créez un hachage du mot de passe donné et le comparez au hachage stocké. S'ils correspondent, le mot de passe est correct.

Dans NodeJS, il existe plusieurs bibliothèques que vous pouvez utiliser pour créer des hachages de mots de passe, telles que bcrypt, scrypt et Argon2. Bcrypt est l’un des plus populaires, en raison de sa facilité d’utilisation et de sa sécurité éprouvée. Pour utiliser bcrypt, vous devez d'abord l'installer dans votre projet avec la commande 'npm install bcrypt'. Après cela, vous pouvez utiliser la fonction 'bcrypt.hash' pour hacher un mot de passe.

En plus du hachage, une autre pratique courante consiste à ajouter un sel au mot de passe avant de créer le hachage. Un « sel » est une chaîne aléatoire qui est ajoutée au mot de passe pour empêcher les attaques de type « table arc-en-ciel ». Une « table arc-en-ciel » est une table précalculée de hachages pour un grand nombre de mots de passe possibles, qu'un attaquant peut utiliser pour découvrir rapidement le mot de passe d'origine à partir du hachage. En ajoutant un « sel » unique à chaque mot de passe, vous rendez l'utilisation des « tables arc-en-ciel » inefficace.

Bcrypt facilite l'ajout d'un « sel » à vos mots de passe. Lorsque vous appelez la fonction 'bcrypt.hash', vous pouvez passer un deuxième argument qui est le nombre de tours que bcrypt doit utiliser pour générer le 'sel'. Ce nombre est un compromis entre sécurité et performances : un nombre plus élevé rendra le sel plus sécurisé, mais sa génération prendra également plus de temps.

Maintenant que vous savez comment stocker les mots de passe en toute sécurité, parlons de l'authentification et de l'autorisation. L'authentification dans les API NodeJS se fait généralement via des jetons JWT (JSON Web Token). Lorsqu'un utilisateur se connecte, l'API génère un jeton JWT qui inclut l'identité de l'utilisateur et éventuellement d'autres informations. Ce jeton est ensuite renvoyé au client, qui doit l'inclure dans toutes les requêtes API ultérieures.

L'autorisation est le processus de vérification que l'utilisateur authentifié est autorisé à effectuer l'action demandée. Cela se fait généralement via un système de « rôles » ou de « permissions ». Par exemple, vous pouvez avoir des rôles d'utilisateur et d'administrateur, dans lesquels l'administrateur est autorisé à faire des choses que l'utilisateur ne fait pas.

En résumé, l'authentification et l'autorisation sont des aspects essentiels de la sécurité dans les API NodeJS. Il est important de stocker les mots de passe en toute sécurité grâce au hachage et au salage, et d'utiliser des jetons JWT pour l'authentification. L'autorisation doit être mise en œuvre via un système de « rôles » ou de « permissions ».

Répondez maintenant à l’exercice sur le contenu :

Quelle est la différence entre l'authentification et l'autorisation dans une API NodeJS et comment sont-elles mises en œuvre ?

Tu as raison! Félicitations, passez maintenant à la page suivante

Vous avez raté! Essayer à nouveau.

Page suivante de lebook gratuit :

10417.6. Authentification et autorisation dans les API NodeJS : Génération et renouvellement des tokens d'accès

Obtenez votre certificat pour ce cours gratuitement ! en téléchargeant lapplication Cursa et en lisant lebook qui sy trouve. Disponible sur Google Play ou App Store !

Get it on Google Play Get it on App Store

+ 6,5 millions
d'étudiants

Certificat gratuit et
valide avec QR Code

48 mille exercices
gratuits

Note de 4,8/5 dans les
magasins d'applications

Cours gratuits en
vidéo, audio et texte