Existe-t-il des bibliothèques d'authentification utilisateur existantes pour node.js? En particulier, je recherche quelque chose qui peut faire l'authentification par mot de passe pour un utilisateur (en utilisant une base de données d'authentification backend personnalisée) et associer cet utilisateur à une session.
Avant d'écrire une bibliothèque d'authentification, je me suis dit que je verrais si les gens connaissaient les bibliothèques existantes. Impossible de trouver quelque chose d'évident via une recherche Google.
-Shreyas
omniauth
(rails) ou pythonsocial-auth
. Les utilisateurs de PHP (et d'autres langages de serveur Web courants) devraient également se sentir libres d'ajouter leur équivalent.Réponses:
Si vous recherchez un cadre d'authentification pour Connect ou Express, Passport mérite d'être étudié: https://github.com/jaredhanson/passport
(Divulgation: je suis le développeur de Passport)
J'ai développé Passport après avoir enquêté sur connect-auth et everyauth. Bien qu'ils soient tous deux d'excellents modules, ils ne répondaient pas à mes besoins. Je voulais quelque chose de plus léger et discret.
Le passeport est divisé en modules séparés, vous pouvez donc choisir d'utiliser uniquement ce dont vous avez besoin (OAuth, uniquement si nécessaire). Passport ne monte également aucune route dans votre application, ce qui vous donne la possibilité de décider quand et où vous voulez l'authentification, et des hooks pour contrôler ce qui se passe lorsque l'authentification réussit ou échoue.
Par exemple, voici le processus en deux étapes pour configurer l'authentification basée sur le formulaire (nom d'utilisateur et mot de passe):
Des stratégies supplémentaires sont disponibles pour l'authentification via Facebook, Twitter, etc. Des stratégies personnalisées peuvent être connectées, si nécessaire.
la source
done(null,false,{ message:'Incorrect username.' })
c'est terrible car on ne connaît pas tous ces paramètres.Session + If
Je suppose que la raison pour laquelle vous n'avez pas trouvé beaucoup de bonnes bibliothèques est que l'utilisation d'une bibliothèque pour l'authentification est généralement trop conçue.
Ce que vous cherchez est juste un classeur de session :) Une session avec:
c'est tout.
Je ne suis pas d'accord avec votre conclusion selon laquelle le plug-in connect-auth est la voie à suivre.
J'utilise également connect mais je n'utilise pas connect-auth pour deux raisons:
IMHO brise connect-auth l'architecture très puissante et facile à lire de l'oignon de connect. A ne pas faire - mon avis :). Vous pouvez trouver un très bon et court article sur le fonctionnement de connect et l'idée de la rondelle d'oignon ici .
Si vous - comme écrit - souhaitez simplement utiliser une connexion de base ou http avec une base de données ou un fichier. Connect-auth est beaucoup trop volumineux. C'est plus pour des trucs comme OAuth 1.0, OAuth 2.0 & Co
Une authentification très simple avec connect
(Il est complet. Il suffit de l'exécuter pour les tests mais si vous souhaitez l'utiliser en production, assurez-vous d'utiliser https) (Et pour être conforme aux principes REST, vous devez utiliser une requête POST au lieu d'une requête GET b / c vous changez d'état :)
REMARQUE
J'ai écrit cette déclaration il y a plus d'un an et je n'ai actuellement aucun projet de nœud actif. Il peut donc y avoir des changements d'API dans Express. Veuillez ajouter un commentaire si je dois changer quoi que ce soit.
la source
On dirait que le plugin connect-auth au middleware connect est exactement ce dont j'ai besoin: http://wiki.github.com/ciaranj/connect-auth/creating-a-form-based-strategy
J'utilise express [ http://expressjs.com ] donc le plugin connect s'intègre très bien car express est sous-classé (ok - prototypé) de connect
la source
Je cherchais essentiellement la même chose. Plus précisément, je voulais ce qui suit:
J'ai fini par créer ma propre fonction middleware
check_auth
que je transmets comme argument à chaque route que je veux authentifier.check_auth
vérifie simplement la session et si l'utilisateur n'est pas connecté, puis les redirige vers la page de connexion, comme ceci:Ensuite, pour chaque itinéraire, je m'assure que cette fonction est passée en tant que middleware. Par exemple:
Enfin, nous devons réellement gérer le processus de connexion. C'est simple:
Quoi qu'il en soit, cette approche a été conçue principalement pour être flexible et simple. Je suis sûr qu'il existe de nombreuses façons de l'améliorer. Si vous en avez, j'aimerais beaucoup vos commentaires.
EDIT: Ceci est un exemple simplifié. Dans un système de production, vous ne voudriez jamais stocker et comparer des mots de passe en texte brut. Comme le souligne un commentateur, il existe des bibliothèques qui peuvent aider à gérer la sécurité des mots de passe.
la source
Jetez également un œil à everyauth si vous souhaitez intégrer une connexion tierce / réseau social.
la source
Voici du code pour l'authentification de base de l'un de mes projets. Je l'utilise contre CouchDB avec et un cache de données d'authentification supplémentaire, mais j'ai supprimé ce code.
Enveloppez une méthode d'authentification autour de la gestion des demandes et fournissez un deuxième rappel pour l'authentification infructueuse. Le rappel de réussite obtiendra le nom d'utilisateur comme paramètre supplémentaire. N'oubliez pas de gérer correctement les demandes avec des informations d'identification incorrectes ou manquantes dans le rappel d'échec:
la source
Une autre approche de l'authentification est Passwordless, un module d' authentification basé sur des jetons pour express qui contourne le problème inhérent aux mots de passe [1]. Il est rapide à mettre en œuvre, ne nécessite pas trop de formulaires et offre une meilleure sécurité pour l'utilisateur moyen (divulgation complète: je suis l'auteur).
[1]: Les mots de passe sont obsolètes
la source
Quelques années se sont écoulées et j'aimerais vous présenter ma solution d'authentification pour Express. Ça s'appelle Lockit . Vous pouvez trouver le projet sur GitHub et une courte introduction sur mon blog .
Quelles sont donc les différences avec les solutions existantes?
require('lockit')
,lockit(app)
, faitusername
etpassword
.Jetez un œil aux exemples .
la source
Il existe un projet appelé Drywall qui implémente un système de connexion utilisateur avec Passport et dispose également d'un panneau d'administration de gestion des utilisateurs. Si vous recherchez un système d'authentification et de gestion des utilisateurs complet, similaire à quelque chose comme Django, mais pour Node.js, c'est tout. J'ai trouvé que c'était un très bon point de départ pour créer une application de nœud qui nécessitait un système d'authentification et de gestion des utilisateurs. Voir la réponse de Jared Hanson pour plus d'informations sur le fonctionnement de Passport.
la source
Voici deux bibliothèques Github populaires pour l'authentification du nœud js:
https://github.com/jaredhanson/passport (suggestible)
https://nodejsmodules.org/pkg/everyauth
la source
Exemple simple et rapide utilisant mongo, pour une API qui fournit l'authentification de l'utilisateur pour le client angulaire, par exemple
dans app.js
pour votre itinéraire quelque chose comme ceci:
Ensuite, dans vos itinéraires qui nécessitent une authentification, vous pouvez simplement vérifier la session utilisateur:
la source
Voici une nouvelle bibliothèque d'authentification qui utilise des jetons horodatés. Les jetons peuvent être envoyés par e-mail ou par SMS aux utilisateurs sans avoir besoin de les stocker dans une base de données. Il peut être utilisé pour l'authentification sans mot de passe ou pour l'authentification à deux facteurs.
https://github.com/vote539/easy-no-password
Divulgation: je suis le développeur de cette bibliothèque.
la source
Si vous avez besoin d'une authentification avec SSO (Single Sign On) avec un compte d'utilisateur Microsoft Windows. Vous pouvez essayer de https://github.com/jlguenego/node-expose-sspi .
Il vous donnera un
req.sso
objet qui contient toutes les informations utilisateur client (login, nom d'affichage, sid, groupes).Avertissement: je suis l'auteur de node-expose-sspi.
la source
sweet-auth
Un module d'authentification utilisateur léger et sans configuration. Il n'a pas besoin d'une base de données sperate.
https://www.npmjs.com/package/sweet-auth
C'est aussi simple que:
la source