1
00:00:03,950 --> 00:00:06,540
Dans les leçons précédentes,

2
00:00:06,540 --> 00:00:10,260
nous avons vu diverses stratégies d'authentification des utilisateurs.

3
00:00:10,260 --> 00:00:12,555
Nous avons commencé par l'authentification de base,

4
00:00:12,555 --> 00:00:16,500
puis nous sommes passés aux cookies et aux sessions express afin

5
00:00:16,500 --> 00:00:20,805
d'authentifier et de suivre les utilisateurs.

6
00:00:20,805 --> 00:00:24,445
Dans cette leçon, nous allons examiner Passport,

7
00:00:24,445 --> 00:00:29,450
un module de nœud qui rend l'authentification assez facile

8
00:00:29,450 --> 00:00:34,880
, discrète et simple à configurer dans votre application.

9
00:00:34,880 --> 00:00:39,125
Passport n'est rien d'autre qu'un middleware d'authentification qui prend en charge

10
00:00:39,125 --> 00:00:43,330
diverses stratégies qui peuvent être utilisées pour l'authentification des utilisateurs,

11
00:00:43,330 --> 00:00:47,505
y compris une stratégie locale comme l'utilisation du nom d'utilisateur et du mot de passe,

12
00:00:47,505 --> 00:00:54,530
ou même l'authentification tierce ou en utilisant OAuth ou OAuth 2.0,

13
00:00:54,530 --> 00:00:57,165
comme l'utilisation de Facebook, Twitter,

14
00:00:57,165 --> 00:01:00,515
ou Google+, et ainsi de suite.

15
00:01:00,515 --> 00:01:03,600
Nous allons examiner quelques détails sur Passport,

16
00:01:03,600 --> 00:01:06,995
l'authentification locale prise en charge Passport.

17
00:01:06,995 --> 00:01:10,520
Et dans l'exercice qui suit,

18
00:01:10,520 --> 00:01:13,970
nous mettrons à jour notre application pour utiliser les

19
00:01:13,970 --> 00:01:19,025
modules Passport et Passport-Local Node pour activer.

20
00:01:19,025 --> 00:01:23,700
authentification locale utilisant le nom d'utilisateur et le mot de passe

21
00:01:23,920 --> 00:01:27,670
Donc, comme je l'ai dit un peu plus tôt,

22
00:01:27,670 --> 00:01:33,185
Passport est un middleware d'authentification très utile pour les applications Node.js.

23
00:01:33,185 --> 00:01:36,675
Cela simplifie l'implémentation de l'authentification.

24
00:01:36,675 --> 00:01:39,274
Comme nous l'avons vu dans les exercices précédents,

25
00:01:39,274 --> 00:01:45,215
l'authentification implique beaucoup de code répétitif et de tâches répétitives pour gérer les erreurs

26
00:01:45,215 --> 00:01:48,440
et concevoir des moyens de vérifier

27
00:01:48,440 --> 00:01:52,580
l'authentification de l'utilisateur, puis d'authentifier l'utilisateur et ainsi de suite.

28
00:01:52,580 --> 00:01:56,090
Tout cela est simplifié dans Passport en utilisant

29
00:01:56,090 --> 00:02:00,040
diverses stratégies qui peuvent être utilisées pour authentifier les utilisateurs.

30
00:02:00,040 --> 00:02:04,220
Vous pouvez utiliser une stratégie locale par exemple basée sur l'

31
00:02:04,220 --> 00:02:09,440
enregistrement des utilisateurs dans votre système à l'aide d'un nom d'utilisateur et d'un mot de passe,

32
00:02:09,440 --> 00:02:14,030
puis l'authentification à l'aide du nom d'utilisateur et du mot de passe.

33
00:02:14,030 --> 00:02:18,965
Passport prend également en charge l'authentification basée sur OpenID

34
00:02:18,965 --> 00:02:22,805
ou l'authentification basée sur OAuth ou OAuth 2.0,

35
00:02:22,805 --> 00:02:27,135
comme cela est pris en charge par des authentificateurs tiers tels que Facebook

36
00:02:27,135 --> 00:02:29,535
, Twitter, Google+, et ainsi de suite.

37
00:02:29,535 --> 00:02:32,465
Nous pouvons également utiliser ce qui est appelé

38
00:02:32,465 --> 00:02:37,880
jetons Web JSON comme une autre façon d'authentification appelée authentification basée sur des jetons.

39
00:02:37,880 --> 00:02:42,485
Nous examinerons l'authentification basée sur des jetons dans la dernière partie de cette leçon.

40
00:02:42,485 --> 00:02:46,465
En outre, Passport prend en charge les sessions.

41
00:02:46,465 --> 00:02:51,785
Comme nous l'avons vu dans l'exercice précédent et la leçon précédente,

42
00:02:51,785 --> 00:02:55,640
les sessions express sont un moyen facile de suivre les utilisateurs

43
00:02:55,640 --> 00:03:01,130
côté serveur et de pouvoir traiter les demandes entrantes des clients.

44
00:03:01,130 --> 00:03:03,330
Pour utiliser Passport, bien sûr,

45
00:03:03,330 --> 00:03:05,515
nous allons installer le module Passport.

46
00:03:05,515 --> 00:03:08,175
Nous allons également, dans l'exercice qui suit,

47
00:03:08,175 --> 00:03:11,195
installer le module Passport-Local pour

48
00:03:11,195 --> 00:03:15,060
fournir la stratégie locale d'authentification des utilisateurs.

49
00:03:15,060 --> 00:03:19,885
L' utilisation de Passport dans notre application est assez simple.

50
00:03:19,885 --> 00:03:23,500
Sur les routes sur lesquelles nous voulons effectuer l'authentification,

51
00:03:23,500 --> 00:03:27,110
nous spécifions simplement l'authentification du passeport, puis spécifions

52
00:03:27,110 --> 00:03:33,320
la stratégie d'authentification spécifique que nous voulons utiliser pour l'authentification de l'utilisateur.

53
00:03:33,320 --> 00:03:34,810
À titre d'exemple ici,

54
00:03:34,810 --> 00:03:36,590
vous voyez que nous appliquons

55
00:03:36,590 --> 00:03:41,950
une authentification locale en disant passeport authentifier et local.

56
00:03:41,950 --> 00:03:46,530
Il utilise donc la stratégie locale pour authentifier les utilisateurs.

57
00:03:46,530 --> 00:03:49,725
Si l'authentification est réussie

58
00:03:49,725 --> 00:03:53,870
, le middleware passe à l'étape suivante,

59
00:03:53,870 --> 00:03:57,435
où nous pouvons traiter davantage la demande entrante.

60
00:03:57,435 --> 00:04:03,240
Ainsi, à la fin de l'authentification réussie du passeport utilisateur,

61
00:04:03,240 --> 00:04:09,300
Passport lui-même ajoute une propriété utilisateur au message de demande.

62
00:04:09,300 --> 00:04:15,110
Donc req.user devient disponible pour nous avec les informations de l'utilisateur,

63
00:04:15,110 --> 00:04:17,960
que nous pouvons ensuite utiliser dans

64
00:04:17,960 --> 00:04:23,850
notre application express pour traiter la demande provenant d'utilisateurs spécifiques.

65
00:04:23,850 --> 00:04:30,110
Ainsi, cela nous aide facilement à identifier le client qui a envoyé la demande à

66
00:04:30,110 --> 00:04:32,840
notre application et, par conséquent, à répondre à

67
00:04:32,840 --> 00:04:37,525
la demande en fonction de l'identité de l'utilisateur.

68
00:04:37,525 --> 00:04:40,140
Avec Passport, nous allons installer

69
00:04:40,140 --> 00:04:45,225
un autre module lié au passeport appelé Passport-Local.

70
00:04:45,225 --> 00:04:49,490
Passport-Local prend en charge une stratégie appelée

71
00:04:49,490 --> 00:04:52,190
stratégie locale d'authentification des utilisateurs

72
00:04:52,190 --> 00:04:55,135
avec la combinaison de mot de passe d'utilisateur standard.

73
00:04:55,135 --> 00:04:58,230
Donc, nous avons mis en place le schéma utilisateur,

74
00:04:58,230 --> 00:04:59,540
comme nous l'avons fait auparavant,

75
00:04:59,540 --> 00:05:05,030
puis utiliser le schéma utilisateur ou le modèle pour suivre le nom d'utilisateur et le mot de

76
00:05:05,030 --> 00:05:11,240
passe, puis Passport-Local dépend de cela pour vérifier le nom d'utilisateur et le mot de passe.

77
00:05:11,240 --> 00:05:12,815
Donc, pour l'installer à nouveau,

78
00:05:12,815 --> 00:05:13,985
étant un module Node,

79
00:05:13,985 --> 00:05:19,490
nous l'installons en utilisant la procédure standard pour installer le module Passport-Local Node.

80
00:05:19,490 --> 00:05:23,075
Une fois que le module Passport-Local Node est installé,

81
00:05:23,075 --> 00:05:30,750
nous devons spécifier la stratégie locale et la manière dont il est réellement utilisé dans Passport.

82
00:05:30,750 --> 00:05:33,465
Donc, pour spécifier une stratégie locale, nous allons dire ;

83
00:05:33,465 --> 00:05:39,290
passeport.use, et donc cela nous permettra de spécifier la stratégie locale à utiliser.

84
00:05:39,290 --> 00:05:42,705
Ainsi, après avoir installé le Passport-Local,

85
00:05:42,705 --> 00:05:46,900
nous allons déclarer une nouvelle stratégie locale et ensuite fournir

86
00:05:46,900 --> 00:05:53,725
la fonction de vérification correspondante qui est utilisée pour vérifier l'utilisateur.

87
00:05:53,725 --> 00:05:59,585
Si vous utilisez un MongoDB comme magasin back-end, alors,

88
00:05:59,585 --> 00:06:02,660
pour nous aider avec la stratégie Passport-Local,

89
00:06:02,660 --> 00:06:06,045
il existe un autre module appelé Passport-Local Mongoose.

90
00:06:06,045 --> 00:06:10,150
Le module Passport-Local Mongoose fournit

91
00:06:10,150 --> 00:06:15,290
un plugin Mongoose qui simplifiera le nom d'utilisateur et le mot de passe.

92
00:06:15,290 --> 00:06:19,250
En installant le plugin Passport-Local Mongoose

93
00:06:19,250 --> 00:06:23,330
puis en l'utilisant lorsque nous définissons le schéma utilisateur et le modèle,

94
00:06:23,330 --> 00:06:29,605
et en utilisant ainsi le support du module Passport-Local Mongoose,

95
00:06:29,605 --> 00:06:33,995
ce plugin mongoose ajoute le nom d'utilisateur et

96
00:06:33,995 --> 00:06:40,080
un moyen crypté de stocker le mot de passe dans notre utilisateur modèle.

97
00:06:40,080 --> 00:06:43,205
Le chiffrement se fait en utilisant le hachage

98
00:06:43,205 --> 00:06:47,060
sur le mot de passe que nous utilisons pour enregistrer les utilisateurs,

99
00:06:47,060 --> 00:06:50,595
et le hachage lui-même utilise un champ sel.

100
00:06:50,595 --> 00:06:54,140
Donc, si vous savez quelque chose sur la cryptographie, en cryptographie,

101
00:06:54,140 --> 00:06:57,620
le sel est une chaîne aléatoire qui est utilisée pour effectuer

102
00:06:57,620 --> 00:07:02,135
l'opération de hachage sur le mot de passe pour stocker.

103
00:07:02,135 --> 00:07:07,590
Donc, le mot de passe haché est lui-même réellement stocké dans notre base de données MongoDB.

104
00:07:07,590 --> 00:07:09,815
Le mot de passe réel n'est pas stocké.

105
00:07:09,815 --> 00:07:14,420
Ainsi, lorsque l'utilisateur essaie de s'authentifier en utilisant le nom d'utilisateur et

106
00:07:14,420 --> 00:07:16,820
le mot de passe, le mot de passe sera à nouveau

107
00:07:16,820 --> 00:07:20,490
haché et ensuite comparé avec les mots de passe hachés stockés dans notre base de données et

108
00:07:20,490 --> 00:07:28,040
tout cela est fourni par le plugin Mongoose, le Passport-Local Mongoose.

109
00:07:28,040 --> 00:07:32,690
En outre, le Passport-Local Mongoose ajoute également des méthodes supplémentaires qui

110
00:07:32,690 --> 00:07:37,535
sont très utiles pour configurer la stratégie Passport-Local.

111
00:07:37,535 --> 00:07:43,095
Donc, dans notre application lorsque nous définissons le schéma utilisateur et le modèle,

112
00:07:43,095 --> 00:07:46,030
nous allons importer le Passport-Local Mongoose, puis ajouter

113
00:07:46,030 --> 00:07:49,495
comme plugin pour le schéma utilisateur.

114
00:07:49,495 --> 00:07:53,000
Ce module Passport-Local Mongoose automatiquement

115
00:07:53,000 --> 00:07:56,240
comme je l'ai dit ajoute le champ nom d'utilisateur et aussi

116
00:07:56,240 --> 00:08:03,690
un champ de stockage de mot de passe haché en utilisant une valeur de sel qu'il utilise pour faire le hachage,

117
00:08:03,690 --> 00:08:08,240
et fournit également des méthodes supplémentaires qui nous

118
00:08:08,240 --> 00:08:13,010
permettent de configurer notre stratégie Passport-Local.

119
00:08:13,010 --> 00:08:16,945
Si nous utilisons le module Passport-Local Mongoose,

120
00:08:16,945 --> 00:08:19,185
alors la stratégie locale,

121
00:08:19,185 --> 00:08:23,990
le plugin Passport-Local Mongoose supporte sur

122
00:08:23,990 --> 00:08:30,020
le modèle utilisateur une méthode d'authentification qui effectuera automatiquement l'authentification.

123
00:08:30,020 --> 00:08:35,195
Dans la diapositive précédente, je vous avais montré comment nous mettrons en œuvre la stratégie locale.

124
00:08:35,195 --> 00:08:39,690
Maintenant, cela est automatiquement fourni pour vous par Passport-Local Mongoose

125
00:08:39,690 --> 00:08:44,285
en disant simplement nouveau localstrategy user.authenticate.

126
00:08:44,285 --> 00:08:50,730
Ensuite, nous n'avons pas besoin d'écrire explicitement le code d'authentification pour la stratégie locale.

127
00:08:50,730 --> 00:08:55,445
De plus, si vous utilisez des sessions qui sont prises en charge par Passport

128
00:08:55,445 --> 00:08:58,555
, pour

129
00:08:58,555 --> 00:09:02,630
les sessions de support, les informations utilisateur doivent être sérialisées pour

130
00:09:02,630 --> 00:09:06,840
être stockées avec les informations de session côté serveur, puis,

131
00:09:06,840 --> 00:09:08,690
lorsque la demande arrive, à

132
00:09:08,690 --> 00:09:10,140
partir de l'ID de session,

133
00:09:10,140 --> 00:09:13,940
les informations utilisateur doit être désérialisée pour extraire

134
00:09:13,940 --> 00:09:20,160
les informations utilisateur de nos informations de session stockées côté serveur.

135
00:09:20,160 --> 00:09:22,145
Maintenant, cette

136
00:09:22,145 --> 00:09:27,440
opération de sérialisation et de désérialisation est déjà prise en charge par Passport-Local Mongoose via

137
00:09:27,440 --> 00:09:29,990
l'utilisateur serialize et

138
00:09:29,990 --> 00:09:36,480
les méthodes utilisateur désérialiser qui sont disponibles à partir du plugin Passport-Local Mongoose.

139
00:09:36,480 --> 00:09:38,095
Donc, après avoir vu cela,

140
00:09:38,095 --> 00:09:42,680
nous allons maintenant voir dans l'exercice combien il est facile de configurer la

141
00:09:42,680 --> 00:09:48,120
stratégie locale pour authentifier les utilisateurs à l'aide des

142
00:09:48,120 --> 00:09:54,490
modules Passport, Passport-Local et Passport-Local Mongoose Node.