Dans les leçons précédentes,
nous avons vu diverses stratégies d'authentification des utilisateurs.
Nous avons commencé par l'authentification de base,
puis nous sommes passés aux cookies et aux sessions express afin
d'authentifier et de suivre les utilisateurs.
Dans cette leçon, nous allons examiner Passport,
un module de nœud qui rend l'authentification assez facile
, discrète et simple à configurer dans votre application.
Passport n'est rien d'autre qu'un middleware d'authentification qui prend en charge
diverses stratégies qui peuvent être utilisées pour l'authentification des utilisateurs,
y compris une stratégie locale comme l'utilisation du nom d'utilisateur et du mot de passe,
ou même l'authentification tierce ou en utilisant OAuth ou OAuth 2.0,
comme l'utilisation de Facebook, Twitter,
ou Google+, et ainsi de suite.
Nous allons examiner quelques détails sur Passport,
l'authentification locale prise en charge Passport.
Et dans l'exercice qui suit,
nous mettrons à jour notre application pour utiliser les
modules Passport et Passport-Local Node pour activer.
authentification locale utilisant le nom d'utilisateur et le mot de passe
Donc, comme je l'ai dit un peu plus tôt,
Passport est un middleware d'authentification très utile pour les applications Node.js.
Cela simplifie l'implémentation de l'authentification.
Comme nous l'avons vu dans les exercices précédents,
l'authentification implique beaucoup de code répétitif et de tâches répétitives pour gérer les erreurs
et concevoir des moyens de vérifier
l'authentification de l'utilisateur, puis d'authentifier l'utilisateur et ainsi de suite.
Tout cela est simplifié dans Passport en utilisant
diverses stratégies qui peuvent être utilisées pour authentifier les utilisateurs.
Vous pouvez utiliser une stratégie locale par exemple basée sur l'
enregistrement des utilisateurs dans votre système à l'aide d'un nom d'utilisateur et d'un mot de passe,
puis l'authentification à l'aide du nom d'utilisateur et du mot de passe.
Passport prend également en charge l'authentification basée sur OpenID
ou l'authentification basée sur OAuth ou OAuth 2.0,
comme cela est pris en charge par des authentificateurs tiers tels que Facebook
, Twitter, Google+, et ainsi de suite.
Nous pouvons également utiliser ce qui est appelé
jetons Web JSON comme une autre façon d'authentification appelée authentification basée sur des jetons.
Nous examinerons l'authentification basée sur des jetons dans la dernière partie de cette leçon.
En outre, Passport prend en charge les sessions.
Comme nous l'avons vu dans l'exercice précédent et la leçon précédente,
les sessions express sont un moyen facile de suivre les utilisateurs
côté serveur et de pouvoir traiter les demandes entrantes des clients.
Pour utiliser Passport, bien sûr,
nous allons installer le module Passport.
Nous allons également, dans l'exercice qui suit,
installer le module Passport-Local pour
fournir la stratégie locale d'authentification des utilisateurs.
L' utilisation de Passport dans notre application est assez simple.
Sur les routes sur lesquelles nous voulons effectuer l'authentification,
nous spécifions simplement l'authentification du passeport, puis spécifions
la stratégie d'authentification spécifique que nous voulons utiliser pour l'authentification de l'utilisateur.
À titre d'exemple ici,
vous voyez que nous appliquons
une authentification locale en disant passeport authentifier et local.
Il utilise donc la stratégie locale pour authentifier les utilisateurs.
Si l'authentification est réussie
, le middleware passe à l'étape suivante,
où nous pouvons traiter davantage la demande entrante.
Ainsi, à la fin de l'authentification réussie du passeport utilisateur,
Passport lui-même ajoute une propriété utilisateur au message de demande.
Donc req.user devient disponible pour nous avec les informations de l'utilisateur,
que nous pouvons ensuite utiliser dans
notre application express pour traiter la demande provenant d'utilisateurs spécifiques.
Ainsi, cela nous aide facilement à identifier le client qui a envoyé la demande à
notre application et, par conséquent, à répondre à
la demande en fonction de l'identité de l'utilisateur.
Avec Passport, nous allons installer
un autre module lié au passeport appelé Passport-Local.
Passport-Local prend en charge une stratégie appelée
stratégie locale d'authentification des utilisateurs
avec la combinaison de mot de passe d'utilisateur standard.
Donc, nous avons mis en place le schéma utilisateur,
comme nous l'avons fait auparavant,
puis utiliser le schéma utilisateur ou le modèle pour suivre le nom d'utilisateur et le mot de
passe, puis Passport-Local dépend de cela pour vérifier le nom d'utilisateur et le mot de passe.
Donc, pour l'installer à nouveau,
étant un module Node,
nous l'installons en utilisant la procédure standard pour installer le module Passport-Local Node.
Une fois que le module Passport-Local Node est installé,
nous devons spécifier la stratégie locale et la manière dont il est réellement utilisé dans Passport.
Donc, pour spécifier une stratégie locale, nous allons dire ;
passeport.use, et donc cela nous permettra de spécifier la stratégie locale à utiliser.
Ainsi, après avoir installé le Passport-Local,
nous allons déclarer une nouvelle stratégie locale et ensuite fournir
la fonction de vérification correspondante qui est utilisée pour vérifier l'utilisateur.
Si vous utilisez un MongoDB comme magasin back-end, alors,
pour nous aider avec la stratégie Passport-Local,
il existe un autre module appelé Passport-Local Mongoose.
Le module Passport-Local Mongoose fournit
un plugin Mongoose qui simplifiera le nom d'utilisateur et le mot de passe.
En installant le plugin Passport-Local Mongoose
puis en l'utilisant lorsque nous définissons le schéma utilisateur et le modèle,
et en utilisant ainsi le support du module Passport-Local Mongoose,
ce plugin mongoose ajoute le nom d'utilisateur et
un moyen crypté de stocker le mot de passe dans notre utilisateur modèle.
Le chiffrement se fait en utilisant le hachage
sur le mot de passe que nous utilisons pour enregistrer les utilisateurs,
et le hachage lui-même utilise un champ sel.
Donc, si vous savez quelque chose sur la cryptographie, en cryptographie,
le sel est une chaîne aléatoire qui est utilisée pour effectuer
l'opération de hachage sur le mot de passe pour stocker.
Donc, le mot de passe haché est lui-même réellement stocké dans notre base de données MongoDB.
Le mot de passe réel n'est pas stocké.
Ainsi, lorsque l'utilisateur essaie de s'authentifier en utilisant le nom d'utilisateur et
le mot de passe, le mot de passe sera à nouveau
haché et ensuite comparé avec les mots de passe hachés stockés dans notre base de données et
tout cela est fourni par le plugin Mongoose, le Passport-Local Mongoose.
En outre, le Passport-Local Mongoose ajoute également des méthodes supplémentaires qui
sont très utiles pour configurer la stratégie Passport-Local.
Donc, dans notre application lorsque nous définissons le schéma utilisateur et le modèle,
nous allons importer le Passport-Local Mongoose, puis ajouter
comme plugin pour le schéma utilisateur.
Ce module Passport-Local Mongoose automatiquement
comme je l'ai dit ajoute le champ nom d'utilisateur et aussi
un champ de stockage de mot de passe haché en utilisant une valeur de sel qu'il utilise pour faire le hachage,
et fournit également des méthodes supplémentaires qui nous
permettent de configurer notre stratégie Passport-Local.
Si nous utilisons le module Passport-Local Mongoose,
alors la stratégie locale,
le plugin Passport-Local Mongoose supporte sur
le modèle utilisateur une méthode d'authentification qui effectuera automatiquement l'authentification.
Dans la diapositive précédente, je vous avais montré comment nous mettrons en œuvre la stratégie locale.
Maintenant, cela est automatiquement fourni pour vous par Passport-Local Mongoose
en disant simplement nouveau localstrategy user.authenticate.
Ensuite, nous n'avons pas besoin d'écrire explicitement le code d'authentification pour la stratégie locale.
De plus, si vous utilisez des sessions qui sont prises en charge par Passport
, pour
les sessions de support, les informations utilisateur doivent être sérialisées pour
être stockées avec les informations de session côté serveur, puis,
lorsque la demande arrive, à
partir de l'ID de session,
les informations utilisateur doit être désérialisée pour extraire
les informations utilisateur de nos informations de session stockées côté serveur.
Maintenant, cette
opération de sérialisation et de désérialisation est déjà prise en charge par Passport-Local Mongoose via
l'utilisateur serialize et
les méthodes utilisateur désérialiser qui sont disponibles à partir du plugin Passport-Local Mongoose.
Donc, après avoir vu cela,
nous allons maintenant voir dans l'exercice combien il est facile de configurer la
stratégie locale pour authentifier les utilisateurs à l'aide des
modules Passport, Passport-Local et Passport-Local Mongoose Node.