Maison > interface Web > js tutoriel > Authentification HTTP dans Node.js

Authentification HTTP dans Node.js

Jennifer Aniston
Libérer: 2025-02-25 15:32:08
original
144 Les gens l'ont consulté

HTTP Authentication in Node.js

La semaine dernière, dans l'article "Création d'un serveur Node.js Http", j'ai introduit les bases de HTTP dans Node.js. L'article d'aujourd'hui vous montrera comment utiliser l'authentification HTTP pour protéger votre site Node.js contre les attaques de mot de passe. Nous introduirons d'abord l'authentification de l'accès de base, puis passerons à une authentification d'accès à digestion plus sécurisée.

Points clés

  • Authentification d'accès de base et authentification d'accès à digestion sont deux méthodes d'authentification HTTP dans Node.js. L'authentification d'accès de base est plus simple et invite l'utilisateur à un nom d'utilisateur et à un mot de passe, tandis que l'authentification d'accès à digest est plus sécurisée car elle crypte le mot de passe avant la transmission.
  • Node.js Utility htpasswd est utilisé pour gérer les fichiers de mot de passe dans l'authentification de base de l'accès, tandis que l'utilitaire est utilisé pour digérer l'authentification de l'accès. Les mots de passe sont stockés dans le fichier de mot de passe côté serveur, et le module htdigest est utilisé pour ajouter la prise en charge d'authentification au serveur HTTP. http-auth
  • L'utilisation de l'authentification HTTP seule ne suffit pas pour garantir la sécurité de votre application Node.js. Pour une meilleure sécurité, il doit être servi via HTTPS. Express.js peut être utilisé pour implémenter l'authentification HTTP dans Node.js et utiliser le middleware
  • . express-basic-auth

Authentification d'accès de base

Lorsqu'un utilisateur accède à un site qui met en œuvre l'authentification, le système l'invitera à entrer son nom d'utilisateur et son mot de passe. Si l'utilisateur fournit des informations d'identification valides, il sera apporté au contenu de la page, sinon il sera refusé avec une réponse "401 non autorisée". Le type le plus simple d'authentification HTTP est l'authentification de base de l'accès.

Fichier de mot de passe

Du côté du serveur, tous les noms d'utilisateur et mots de passe chiffrés sont stockés dans le fichier de mot de passe. L'utilitaire Node.js

peut être utilisé pour gérer les fichiers de mot de passe. Pour installer htpasswd, utilisez la commande suivante. htpasswd signifie le gestionnaire de package Node.js, qui est installé par défaut avec node.js. npm utilisé pour installer le module Node.js. npm Frappe le package d'installation global, ce qui signifie qu'il est inclus dans la variable de chemin du système. -g

npm install -g htpasswd
Copier après la connexion
Copier après la connexion
Copier après la connexion
Après avoir installé

, vous pouvez créer un nouvel utilisateur à l'aide de la commande suivante. Cet exemple utilise l'indicateur htpasswd pour créer un nouveau fichier de mot de passe nommé "htpasswd". Dans le nouveau fichier, ajoutez un utilisateur nommé "FOO". L'indicateur -c permet de spécifier le mot de passe "bar" dans le cadre de la ligne de commande. -b

htpasswd -bc htpasswd foo bar
Copier après la connexion
Copier après la connexion
Copier après la connexion
Après l'exécution de la commande, ouvrez votre fichier "htpasswd". L'entrée de fichier de mot de passe pour l'utilisateur "FOO" est affichée ci-dessous. Cette ligne contient le nom d'utilisateur et le mot de passe crypté. Puisqu'il s'agit du premier et du seul utilisateur du fichier, ce devrait être la seule ligne du fichier.

<code>foo:{SHA}Ys23Ag/5IOWqZCw9QGaVDdHwH00=</code>
Copier après la connexion
Copier après la connexion
Node.js Intégration

L'étape suivante consiste à ajouter la prise en charge d'authentification à notre serveur HTTP. Tout d'abord, vous devez installer le module

à l'aide de la commande NPM suivante. http-auth

npm install -g htpasswd
Copier après la connexion
Copier après la connexion
Copier après la connexion

Ensuite, créez un nouveau fichier appelé "Basic_Auth_Server.js" et ajoutez le code suivant. Notez que le module http-auth est référencé à la ligne 2. Dans les lignes 3 à 7, passez l'objet de configuration au module d'authentification. Le champ authRealm définit le domaine d'authentification. Le champ authFile pointe vers le fichier de mot de passe que nous avons créé plus tôt. __dirname fait référence au répertoire où se trouve le script en cours d'exécution. Cet exemple suppose que le fichier "htpasswd" est dans le même répertoire que "Basic_Auth_Server.js". Le champ de configuration authType indique le type d'authentification à utiliser. Dans la ligne 9, le schéma d'authentification de base est appliqué à la connexion HTTP. La fonction de rappel d'authentification fournit un nom d'utilisateur authentifié pour un traitement ultérieur.

htpasswd -bc htpasswd foo bar
Copier après la connexion
Copier après la connexion
Copier après la connexion

Enfin, démarrez le serveur. Vous pouvez vous connecter au serveur en naviguant vers https://www.php.cn/link/bb122c8fe6c764e8aae555e2186a6344 . Vous serez invité à saisir votre nom d'utilisateur et votre mot de passe. Fournissez les informations d'identification que vous avez créées plus tôt et le navigateur vous dira bonjour par son nom.

limitations

Le plus grand inconvénient de l'authentification de l'accès de base est que les informations d'identification sont envoyées sur le réseau sous forme de texte brut. Pour éviter les écoutes, une telle authentification ne peut être utilisée qu'avec des connexions sécurisées (c'est-à-dire HTTPS). Si une connexion sécurisée n'est pas disponible, vous devez utiliser une forme d'authentification plus sécurisée à la place.

Disser l'authentification de l'accès

L'authentification de l'accès numérique est une alternative plus sécurisée à l'authentification de base. Avec l'authentification Digest, le mot de passe est chiffré avant la transmission du réseau.

Fichier de mot de passe

Digit L'authentification utilise également des fichiers de mot de passe. Cependant, le format de fichier est légèrement différent de celui utilisé dans l'authentification de base. Pour utiliser le format de fichier de mot de passe Digest, nous utiliserons un autre utilitaire appelé htdigest. Utilisez la commande NPM suivante pour installer htdigest.

<code>foo:{SHA}Ys23Ag/5IOWqZCw9QGaVDdHwH00=</code>
Copier après la connexion
Copier après la connexion

Ensuite, utilisez la commande suivante pour créer un nouveau fichier de mot de passe. De même, l'indicateur -c est utilisé pour créer un nouveau fichier de mot de passe nommé "htpasswd". Cette fois, nous devons également spécifier un champ d'authentification. Dans ce cas, le champ d'authentification est "zone privée". Dans cet exemple, le nom d'utilisateur est à nouveau "foo". Veuillez noter que le mot de passe n'est pas fourni dans la commande. Après être entré dans la commande, vous serez invité à fournir votre mot de passe.

npm install http-auth
Copier après la connexion

Après avoir exécuté htdigest, vérifiez le nouveau fichier "htpasswd". L'entrée pour "FOO" est indiquée ci-dessous. Le fichier d'authentification Digest contient le nom d'utilisateur et le mot de passe chiffré, ainsi que le domaine d'authentification non inclus dans le fichier d'authentification de base.

npm install -g htpasswd
Copier après la connexion
Copier après la connexion
Copier après la connexion

Node.js Intégration

Pour intégrer l'authentification Digest dans notre serveur, nous utiliserons à nouveau le module http-auth. Si vous avez suivi ce tutoriel, le module doit déjà être installé sur votre machine. Ensuite, créez un nouveau fichier appelé "digest_auth_server.js" pour implémenter votre serveur. Le code du serveur est affiché ci-dessous. Notez que le code du serveur est presque le même que le code de serveur d'authentification de base. La différence est le champ authType de l'objet de configuration. Dans ce cas, authType est défini sur "Digest". Ce serveur est accessible comme un serveur d'authentification de base.

htpasswd -bc htpasswd foo bar
Copier après la connexion
Copier après la connexion
Copier après la connexion

Conclusion

Cet article présente les bases de l'authentification HTTP. En suivant les exemples fournis ici, votre application Node.js peut être un peu plus sûre. Cependant, vous devez savoir que l'authentification seule ne suffit pas. Si la sécurité est le principal problème, votre site doit être servi via HTTPS. Dans un prochain article, j'explorerai HTTPS et de nombreuses autres fonctionnalités Great Node.js. Si vous avez aimé cet article, vous voudrez tout savoir sur la dernière collection de saut de saut imprimé et de livres électroniques de SitePoint. Le premier livre est "Node.js" de Don Nguyen - en savoir plus sur SitePoint!

(Ce qui suit est la partie FAQ. En raison de la durée de l'article, je résumerai la partie FAQ pour conserver les informations de base et éviter la duplication et la redondance.)

FAQ (FAQ) sur l'authentification HTTP dans node.js

  • Comment implémenter l'authentification HTTP à l'aide d'express.js dans node.js? Utiliser express-basic-auth middleware. L'exemple de code montre comment s'authentifier avec un nom d'utilisateur et un mot de passe.

  • Comment protéger mon application Node.js à l'aide de l'authentification HTTP? Utilisez le module http-auth et spécifiez le chemin du fichier de mot de passe. Assurez-vous d'utiliser HTTPS pour améliorer la sécurité.

  • Comment utiliser l'authentification HTTP pour gérer plusieurs utilisateurs? Utilisez un fichier ou une base de données pour stocker le nom d'utilisateur et le mot de passe. Le module http-auth prend en charge cette fonction.

  • Comment personnaliser les invites d'authentification HTTP dans Node.js? Définissez l'option realm.

  • Comment gérer l'échec de l'authentification dans Node.js? Le serveur enverra une réponse 401 non autorisée. Vous pouvez personnaliser cette réponse.

  • Comment utiliser l'authentification HTTP avec HTTPS? Créez un serveur HTTPS au lieu d'un serveur HTTP.

  • Comment utiliser l'authentification HTTP avec des cookies? Définissez des cookies après une authentification réussie.

  • Comment utiliser l'authentification HTTP avec une session? Utiliser le middleware de session, comme express-session.

  • Comment utiliser l'authentification HTTP avec JSON Web Token (JWT)? Utilisez JWT Middleware, par exemple express-jwt.

  • Comment utiliser l'authentification HTTP avec OAuth? Utilisez le middleware OAuth, par exemple passport.

En bref, ce qui précède résume brièvement le contenu central de la partie FAQ et effectue un traitement pseudo-original sur le texte d'origine. Tous les liens d'image sont restés inchangés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal