1
00:00:03,950 --> 00:00:06,540
Nelle lezioni precedenti,

2
00:00:06,540 --> 00:00:10,260
abbiamo visto varie strategie per l'autenticazione degli utenti.

3
00:00:10,260 --> 00:00:12,555
Abbiamo iniziato con l'autenticazione di base, per

4
00:00:12,555 --> 00:00:16,500
poi passare ai cookie e alle sessioni express

5
00:00:16,500 --> 00:00:20,805
come un modo per autenticare e tracciare gli utenti.

6
00:00:20,805 --> 00:00:24,445
In questa lezione vedremo Passport,

7
00:00:24,445 --> 00:00:29,450
un modulo nodo che rende l'autenticazione abbastanza semplice

8
00:00:29,450 --> 00:00:34,880
, discreto e semplice da configurare nella vostra applicazione.

9
00:00:34,880 --> 00:00:39,125
Passport non è altro che un middleware di autenticazione che supporta

10
00:00:39,125 --> 00:00:43,330
varie strategie che possono essere utilizzate per l'autenticazione dell'utente,

11
00:00:43,330 --> 00:00:47,505
inclusa una strategia locale come l'uso di nome utente e password,

12
00:00:47,505 --> 00:00:54,530
o anche l'autenticazione di terze parti o l'utilizzo di OAuth o OAuth 2.0,

13
00:00:54,530 --> 00:00:57,165
come l'utilizzo di Facebook, Twitter,

14
00:00:57,165 --> 00:01:00,515
o Google+ e così via.

15
00:01:00,515 --> 00:01:03,600
Vedremo alcuni dettagli su Passport,

16
00:01:03,600 --> 00:01:06,995
l'autenticazione locale supportata Passport.

17
00:01:06,995 --> 00:01:10,520
E nell'esercizio che segue,

18
00:01:10,520 --> 00:01:13,970
aggiorneremo la nostra applicazione per fare uso di

19
00:01:13,970 --> 00:01:19,025
moduli Passport e Passport Local Node per abilitare.

20
00:01:19,025 --> 00:01:23,700
autenticazione locale utilizzando nome utente e password.

21
00:01:23,920 --> 00:01:27,670
Quindi, come ho detto un po 'prima,

22
00:01:27,670 --> 00:01:33,185
Passport è un middleware di autenticazione molto utile per le applicazioni Node.js.

23
00:01:33,185 --> 00:01:36,675
Rende più semplice implementare l'autenticazione.

24
00:01:36,675 --> 00:01:39,274
Come abbiamo visto negli esercizi precedenti,

25
00:01:39,274 --> 00:01:45,215
l'autenticazione comporta un sacco di codice ripetitivo e attività ripetitive che gestiscono gli errori

26
00:01:45,215 --> 00:01:48,440
e progettano modi di controllare

27
00:01:48,440 --> 00:01:52,580
l'autenticazione dell'utente e quindi autenticare l'utente e così via.

28
00:01:52,580 --> 00:01:56,090
Tutto questo è semplificato all'interno di Passport utilizzando

29
00:01:56,090 --> 00:02:00,040
varie strategie che possono essere utilizzate per autenticare gli utenti.

30
00:02:00,040 --> 00:02:04,220
È possibile utilizzare una strategia locale, ad esempio, che si basa sulla

31
00:02:04,220 --> 00:02:09,440
registrazione degli utenti nel sistema utilizzando un nome utente e una password,

32
00:02:09,440 --> 00:02:14,030
e quindi in seguito autenticarli utilizzando il nome utente e la password.

33
00:02:14,030 --> 00:02:18,965
Passport supporta anche l'autenticazione basata su OpenID

34
00:02:18,965 --> 00:02:22,805
o l'autenticazione basata su OAuth o OAuth 2.0,

35
00:02:22,805 --> 00:02:27,135
come è supportata da autenticatori di terze parti come Facebook

36
00:02:27,135 --> 00:02:29,535
, Twitter, Google+ e così via.

37
00:02:29,535 --> 00:02:32,465
Possiamo anche usare ciò che viene chiamato come

38
00:02:32,465 --> 00:02:37,880
token web JSON come un altro modo di autenticazione chiamato autenticazione basata su token.

39
00:02:37,880 --> 00:02:42,485
Esamineremo l'autenticazione basata su token nella parte successiva di questa lezione.

40
00:02:42,485 --> 00:02:46,465
Inoltre, Passport supporta le sessioni.

41
00:02:46,465 --> 00:02:51,785
Come abbiamo visto nell'esercizio precedente e nella lezione precedente,

42
00:02:51,785 --> 00:02:55,640
le sessioni express sono un modo semplice per tenere traccia degli utenti

43
00:02:55,640 --> 00:03:01,130
sul lato server e di essere in grado di soddisfare le richieste in arrivo dai client.

44
00:03:01,130 --> 00:03:03,330
Per utilizzare Passport, ovviamente,

45
00:03:03,330 --> 00:03:05,515
installeremo il modulo Passport.

46
00:03:05,515 --> 00:03:08,175
Nell' esercizio seguente verrà inoltre

47
00:03:08,175 --> 00:03:11,195
installato il modulo Passport-Local per

48
00:03:11,195 --> 00:03:15,060
fornire la strategia locale per l'autenticazione dell'utente.

49
00:03:15,060 --> 00:03:19,885
L' uso di Passport all'interno della nostra applicazione è abbastanza semplice.

50
00:03:19,885 --> 00:03:23,500
Sulle route su cui si desidera eseguire l'autenticazione, è

51
00:03:23,500 --> 00:03:27,110
sufficiente specificare l'autenticazione passaporto e quindi specificare

52
00:03:27,110 --> 00:03:33,320
la strategia di autenticazione specifica che si desidera utilizzare per l'autenticazione utente.

53
00:03:33,320 --> 00:03:34,810
Come esempio qui,

54
00:03:34,810 --> 00:03:36,590
si vede che stiamo applicando

55
00:03:36,590 --> 00:03:41,950
un'autenticazione locale dicendo passaporto autenticazione e locale.

56
00:03:41,950 --> 00:03:46,530
E quindi utilizza la strategia locale per autenticare gli utenti.

57
00:03:46,530 --> 00:03:49,725
Se l'autenticazione ha esito positivo,

58
00:03:49,725 --> 00:03:53,870
il middleware passa al passaggio successivo,

59
00:03:53,870 --> 00:03:57,435
dove possiamo elaborare ulteriormente la richiesta in arrivo.

60
00:03:57,435 --> 00:04:03,240
Pertanto, al termine dell'autenticazione corretta del passaporto utente,

61
00:04:03,240 --> 00:04:09,300
Passport stesso aggiunge una proprietà utente al messaggio di richiesta.

62
00:04:09,300 --> 00:04:15,110
Così req.user diventa disponibile per noi con le informazioni dell'utente in là,

63
00:04:15,110 --> 00:04:17,960
che possiamo successivamente utilizzare all'interno della

64
00:04:17,960 --> 00:04:23,850
nostra applicazione espressa per gestire la richiesta proveniente da utenti specifici.

65
00:04:23,850 --> 00:04:30,110
Quindi questo ci aiuta facilmente a identificare quale cliente ha inviato la richiesta alla

66
00:04:30,110 --> 00:04:32,840
nostra applicazione e di conseguenza a soddisfare

67
00:04:32,840 --> 00:04:37,525
la richiesta in base all'identità dell'utente.

68
00:04:37,525 --> 00:04:40,140
Insieme a Passport, installeremo

69
00:04:40,140 --> 00:04:45,225
un altro modulo relativo Passport chiamato Passport-Local.

70
00:04:45,225 --> 00:04:49,490
Passport-Local supporta una strategia chiamata come

71
00:04:49,490 --> 00:04:52,190
strategia locale per l'autenticazione degli utenti

72
00:04:52,190 --> 00:04:55,135
con la combinazione di password nome utente standard.

73
00:04:55,135 --> 00:04:58,230
Quindi impostiamo lo schema utente,

74
00:04:58,230 --> 00:04:59,540
come abbiamo fatto prima,

75
00:04:59,540 --> 00:05:05,030
e quindi usiamo lo schema utente o il modello per tenere traccia del nome utente e della

76
00:05:05,030 --> 00:05:11,240
password e quindi Passport-Local dipende da questo per verificare il nome utente e la password.

77
00:05:11,240 --> 00:05:12,815
Quindi, per installarlo di nuovo,

78
00:05:12,815 --> 00:05:13,985
essendo un modulo nodo,

79
00:05:13,985 --> 00:05:19,490
lo installiamo utilizzando la procedura standard per l'installazione del modulo Passport-Local Node.

80
00:05:19,490 --> 00:05:23,075
Una volta che il modulo Passport-Local Node è installato,

81
00:05:23,075 --> 00:05:30,750
allora abbiamo bisogno di specificare la strategia locale e come viene effettivamente utilizzato all'interno di Passport.

82
00:05:30,750 --> 00:05:33,465
Quindi, per specificare una strategia locale, diremo;

83
00:05:33,465 --> 00:05:39,290
passport.use, e quindi questo ci permetterà di specificare la strategia locale da utilizzare.

84
00:05:39,290 --> 00:05:42,705
Quindi, dopo aver installato il Passport-Local,

85
00:05:42,705 --> 00:05:46,900
dichiareremo una nuova strategia locale e quindi forniremo

86
00:05:46,900 --> 00:05:53,725
la corrispondente funzione di verifica che viene utilizzata per verificare l'utente.

87
00:05:53,725 --> 00:05:59,585
Se stai usando un MongoDB come negozio back-end, quindi,

88
00:05:59,585 --> 00:06:02,660
per aiutarci con la strategia Passport-Local,

89
00:06:02,660 --> 00:06:06,045
c'è un altro modulo chiamato come Passport-Local Mongoose.

90
00:06:06,045 --> 00:06:10,150
Il modulo Passport-Local Mongoose fornisce

91
00:06:10,150 --> 00:06:15,290
un plugin Mongoose che semplificherà il nome utente e la password di accesso.

92
00:06:15,290 --> 00:06:19,250
Installando il plugin Passport-Local Mongoose e

93
00:06:19,250 --> 00:06:23,330
utilizzandolo quando definiamo lo schema utente e il modello,

94
00:06:23,330 --> 00:06:29,605
e quindi utilizzando il supporto del modulo Passport-Local Mongoose,

95
00:06:29,605 --> 00:06:33,995
questo plugin mangusta aggiunge il nome utente e

96
00:06:33,995 --> 00:06:40,080
un modo crittografato di memorizzare la password all'interno del nostro utente modello.

97
00:06:40,080 --> 00:06:43,205
La crittografia viene eseguita utilizzando l'hashing

98
00:06:43,205 --> 00:06:47,060
sulla password che usiamo per registrare gli utenti,

99
00:06:47,060 --> 00:06:50,595
e l'hash stesso utilizza un campo salt.

100
00:06:50,595 --> 00:06:54,140
Quindi, se sai qualcosa sulla crittografia, nella crittografia,

101
00:06:54,140 --> 00:06:57,620
il sale è una stringa casuale che viene utilizzata per eseguire

102
00:06:57,620 --> 00:07:02,135
l'operazione di hashing sulla password per la memorizzazione.

103
00:07:02,135 --> 00:07:07,590
Quindi la password hash è di per sé memorizzata nel nostro database MongoDB.

104
00:07:07,590 --> 00:07:09,815
La password effettiva non è memorizzata.

105
00:07:09,815 --> 00:07:14,420
Quindi, quando l'utente tenta di autenticarsi usando il nome utente e

106
00:07:14,420 --> 00:07:16,820
la password, la password verrà nuovamente hash e poi confrontata con

107
00:07:16,820 --> 00:07:20,490
le password hash memorizzate nel nostro database e questo è

108
00:07:20,490 --> 00:07:28,040
tutto fornito dal plugin Mongoose, il Passport-Local Mongoose.

109
00:07:28,040 --> 00:07:32,690
Inoltre, Passport-Local Mongoose aggiunge anche metodi aggiuntivi che

110
00:07:32,690 --> 00:07:37,535
sono molto utili per configurare la strategia Passport-Local.

111
00:07:37,535 --> 00:07:43,095
Così all'interno della nostra applicazione quando definiamo lo schema utente e il modello,

112
00:07:43,095 --> 00:07:46,030
ci sarà importare il Passport-Local Mongoose e quindi aggiungere

113
00:07:46,030 --> 00:07:49,495
come il plugin per lo schema utente.

114
00:07:49,495 --> 00:07:53,000
Questo modulo Passport-Local Mongoose automaticamente

115
00:07:53,000 --> 00:07:56,240
come ho detto aggiunge il campo nome utente e anche

116
00:07:56,240 --> 00:08:03,690
un campo di archiviazione password hash utilizzando un valore salt che utilizza per fare l'hashing,

117
00:08:03,690 --> 00:08:08,240
e fornisce anche metodi aggiuntivi che ci permettono di

118
00:08:08,240 --> 00:08:13,010
configurare la nostra strategia Passport-Local.

119
00:08:13,010 --> 00:08:16,945
Se stiamo usando il modulo Passport-Local Mongoose,

120
00:08:16,945 --> 00:08:19,185
quindi la strategia locale,

121
00:08:19,185 --> 00:08:23,990
il plugin Passport-Local Mongoose supporta

122
00:08:23,990 --> 00:08:30,020
sul modello utente un metodo di autenticazione che farà automaticamente l'autenticazione.

123
00:08:30,020 --> 00:08:35,195
Nella diapositiva precedente vi avevo mostrato come avremmo implementato la strategia locale.

124
00:08:35,195 --> 00:08:39,690
Ora questo viene fornito automaticamente per te da Passport-Local Mongoose

125
00:08:39,690 --> 00:08:44,285
semplicemente dicendo nuovo localstrategy user.authenticate.

126
00:08:44,285 --> 00:08:50,730
Quindi non abbiamo bisogno di scrivere esplicitamente il codice di autenticazione per la strategia locale.

127
00:08:50,730 --> 00:08:55,445
Inoltre, se si utilizzano sessioni supportate da Passport,

128
00:08:55,445 --> 00:08:58,555
quindi, per le sessioni di supporto,

129
00:08:58,555 --> 00:09:02,630
le informazioni dell'utente devono essere serializzate per

130
00:09:02,630 --> 00:09:06,840
essere memorizzate con le informazioni sulla sessione sul lato server e quindi,

131
00:09:06,840 --> 00:09:08,690
quando arriva la richiesta,

132
00:09:08,690 --> 00:09:10,140
dall'ID di sessione,

133
00:09:10,140 --> 00:09:13,940
le informazioni utente deve essere deserializzata per estrarre

134
00:09:13,940 --> 00:09:20,160
le informazioni dell'utente dalle nostre informazioni di sessione che sono memorizzate sul lato server.

135
00:09:20,160 --> 00:09:22,145
Ora questa

136
00:09:22,145 --> 00:09:27,440
operazione di serializzazione e deserializzazione è già supportata da Passport-Local Mongoose attraverso

137
00:09:27,440 --> 00:09:29,990
l'utente serialize e

138
00:09:29,990 --> 00:09:36,480
i metodi utente deserialize che sono disponibili dal plugin Passport-Local Mongoose.

139
00:09:36,480 --> 00:09:38,095
Così, dopo aver visto questo,

140
00:09:38,095 --> 00:09:42,680
vedremo ora nell'esercizio come è facile configurare la

141
00:09:42,680 --> 00:09:48,120
strategia locale per l'autenticazione degli utenti utilizzando

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