1
00:00:03,620 --> 00:00:09,015
Sono sicuro che tu abbia uno o più account sui social media.

2
00:00:09,015 --> 00:00:13,920
Che si tratti di Facebook, Twitter, YouTube, Google, GitHub,

3
00:00:13,920 --> 00:00:19,760
o molti altri fornitori di servizi di questo tipo, dove hai registrato telefono e account.

4
00:00:19,760 --> 00:00:22,545
Ora, questi fornitori di servizi, a loro volta,

5
00:00:22,545 --> 00:00:27,480
sono disposti a fornire servizi di autenticazione per tuo conto.

6
00:00:27,480 --> 00:00:32,880
Così, ad esempio, si vede la proliferazione di un certo numero di siti web

7
00:00:32,880 --> 00:00:37,440
e applicazioni mobili in cui si è autorizzati ad accedere

8
00:00:37,440 --> 00:00:40,260
utilizzando i propri account di social media.

9
00:00:40,260 --> 00:00:42,805
Ora, come funziona davvero?

10
00:00:42,805 --> 00:00:47,270
Molti di questi provider di account di social media

11
00:00:47,270 --> 00:00:53,945
fungono da provider di servizi di autenticazione utilizzando un protocollo chiamato come OAuth.

12
00:00:53,945 --> 00:01:00,660
Esamineremo OAuth e come consente a questi provider di autenticazione di terze parti di

13
00:01:00,660 --> 00:01:04,995
fornire l'autenticazione per tuo conto

14
00:01:04,995 --> 00:01:14,183
e ti permetteranno di accedere ad altri servizi utilizzando i loro account di social media.

15
00:01:14,183 --> 00:01:18,510
Sono sicuro che potresti aver sentito parlare di OAuth 1 e OAuth 2,

16
00:01:18,510 --> 00:01:21,370
e potresti aver sentito da persone dire

17
00:01:21,370 --> 00:01:24,669
che Facebook fornisce l'autenticazione basata su OAuth 2,

18
00:01:24,669 --> 00:01:28,450
o Google fornisce l'autenticazione basata su OAuth 2 e così via.

19
00:01:28,450 --> 00:01:29,800
Sono sicuro che ti starai chiedendo,

20
00:01:29,800 --> 00:01:35,240
cosa sono esattamente questi OAuth1 e OAuth 2?

21
00:01:35,240 --> 00:01:40,090
Ora, OAuth1 e OAuth 2 sono framework

22
00:01:40,090 --> 00:01:42,920
di autorizzazione basati su standard aperti.

23
00:01:42,920 --> 00:01:46,110
E questi possono essere utilizzati su Internet per autenticare

24
00:01:46,110 --> 00:01:50,375
la tua identità su molti siti web o applicazioni mobili.

25
00:01:50,375 --> 00:01:52,475
Ora, quando si utilizzano questi servizi,

26
00:01:52,475 --> 00:01:56,470
si dipende da uno degli account di social media come Facebook,

27
00:01:56,470 --> 00:01:58,525
Google, Twitter, Microsoft, Instagram,

28
00:01:58,525 --> 00:02:02,380
GitHub, DigitalOcean, e molti altri,

29
00:02:02,380 --> 00:02:06,915
che forniscono questi servizi di autenticazione per gli altri a fare uso di.

30
00:02:06,915 --> 00:02:10,465
Questi provider di servizi di autenticazione promettono

31
00:02:10,465 --> 00:02:15,310
agli utenti di questi servizi di autenticazione che autenticheranno l'identità

32
00:02:15,310 --> 00:02:18,535
dell'utente in base all'invio delle

33
00:02:18,535 --> 00:02:24,100
proprie credenziali per questi servizi di social media.

34
00:02:24,100 --> 00:02:28,630
Ora, c'è un servizio complementare OpenID.

35
00:02:28,630 --> 00:02:34,220
Ma, ovviamente, non correlato a OAuth ma fornisce un tipo di servizio simile.

36
00:02:34,220 --> 00:02:38,005
Ma la maggior parte dei fornitori di servizi di social media standard,

37
00:02:38,005 --> 00:02:39,835
come vedrai elencato qui,

38
00:02:39,835 --> 00:02:44,290
fornisce servizi basati su OAuth 2 in questi giorni.

39
00:02:44,290 --> 00:02:48,760
Ora, come ho detto, OAuth1 e OAuth 2 sono protocolli di autenticazione

40
00:02:48,760 --> 00:02:53,010
e OAuth 1 è stato il primo protocollo che è venuto in essere.

41
00:02:53,010 --> 00:02:55,165
Questo è stato evoluto da Twitter,

42
00:02:55,165 --> 00:02:58,725
Blaine Cook è la persona dietro di esso,

43
00:02:58,725 --> 00:03:04,330
e questo è documentato nella Internet Engineering Task Force, RFC 5849.

44
00:03:04,330 --> 00:03:08,235
Quindi, se volete leggere i dettagli cruenti di come funzionano questi protocolli,

45
00:03:08,235 --> 00:03:11,350
questo è il posto giusto per trovarlo.

46
00:03:11,350 --> 00:03:18,430
Il protocollo OAuth 2 si è evoluto da OAuth 1 per renderlo più semplice

47
00:03:18,430 --> 00:03:23,420
e per fornire un modo più semplice per lo sviluppo del client.

48
00:03:23,420 --> 00:03:29,050
E questo è documentato in IETF RFC 6749 e successivamente,

49
00:03:29,050 --> 00:03:35,975
un altro utilizzo di token portatore è avvenuto in IETF RFC 6750.

50
00:03:35,975 --> 00:03:38,155
Ora, dal nostro punto di vista,

51
00:03:38,155 --> 00:03:42,926
non vogliamo entrare nei dettagli di come funzionano effettivamente questi protocolli.

52
00:03:42,926 --> 00:03:45,640
Invece, tutto ciò che ci interessa è,

53
00:03:45,640 --> 00:03:51,505
come possiamo sfruttare questi per l'autenticazione dell'utente all'interno della nostra applicazione web,

54
00:03:51,505 --> 00:03:53,460
o all'interno della nostra applicazione mobile,

55
00:03:53,460 --> 00:03:56,215
quando abbiamo bisogno di autenticare

56
00:03:56,215 --> 00:03:59,965
l'utente al server Express su cui abbiamo costruito finora?

57
00:03:59,965 --> 00:04:04,330
Ora, ci concentreremo principalmente su OAuth 2,

58
00:04:04,330 --> 00:04:05,710
perché nell'esercizio,

59
00:04:05,710 --> 00:04:10,960
esamineremo l'uso di Facebook come provider di servizi di autenticazione OAuth 2,

60
00:04:10,960 --> 00:04:13,870
e qui, abbiamo bisogno di capire

61
00:04:13,870 --> 00:04:19,810
alcuni termini per vedere come funziona esattamente questo protocollo OAuth 2.

62
00:04:19,810 --> 00:04:25,065
Almeno, i dettagli bare-bone di come funziona il protocollo stesso.

63
00:04:25,065 --> 00:04:26,995
Ora, nel caso di OAuth 2,

64
00:04:26,995 --> 00:04:30,440
parliamo sempre di una proprietà delle risorse.

65
00:04:30,440 --> 00:04:32,200
Ora, in questo caso,

66
00:04:32,200 --> 00:04:34,810
la risorsa a cui mi riferisco non

67
00:04:34,810 --> 00:04:37,870
è la risorsa memorizzata sul server Express.

68
00:04:37,870 --> 00:04:39,655
Invece, la risorsa a cui ci riferiamo qui,

69
00:04:39,655 --> 00:04:42,055
è l'identità dell'utente.

70
00:04:42,055 --> 00:04:45,760
Ora, qualsiasi server, come il server Express che stiamo costruendo,

71
00:04:45,760 --> 00:04:48,310
vuole avere accesso a questa risorsa,

72
00:04:48,310 --> 00:04:50,000
questa è la tua identità.

73
00:04:50,000 --> 00:04:51,760
Ora, dov'e' la tua identita'? La

74
00:04:51,760 --> 00:04:54,160
tua identità è memorizzata su uno di

75
00:04:54,160 --> 00:04:58,457
quei provider di servizi di autenticazione dei social media come Facebook e così via,

76
00:04:58,457 --> 00:05:03,140
perché hai già creato un account su questi siti di social media.

77
00:05:03,140 --> 00:05:06,920
Quindi, le tue informazioni o le tue informazioni di identità o le

78
00:05:06,920 --> 00:05:11,020
informazioni del tuo profilo sono memorizzate su Facebook, ad esempio.

79
00:05:11,020 --> 00:05:15,550
Ora, il tuo server Express vuole ottenere l'accesso alla tua identità e

80
00:05:15,550 --> 00:05:20,650
verificare che sei davvero tu che stai cercando di accedere al server Express.

81
00:05:20,650 --> 00:05:22,000
Quindi, in questo caso,

82
00:05:22,000 --> 00:05:24,690
il server Express che abbiamo sviluppato,

83
00:05:24,690 --> 00:05:27,390
funge da applicazione client.

84
00:05:27,390 --> 00:05:29,170
Quindi, questo è dove l'applicazione client,

85
00:05:29,170 --> 00:05:33,265
che è il sito web o l'app mobile che vuole

86
00:05:33,265 --> 00:05:38,905
accedere al server delle risorse per ottenere le informazioni su di te.

87
00:05:38,905 --> 00:05:41,530
Che cos'è un server di risorse di cui stiamo parlando?

88
00:05:41,530 --> 00:05:45,730
Questo è il server di autenticazione OAuth di Facebook,

89
00:05:45,730 --> 00:05:49,870
che fornisce anche le informazioni del tuo profilo su richiesta.

90
00:05:49,870 --> 00:05:54,490
Ora, ovviamente, non continuerai a distribuire in modo casuale le informazioni del tuo profilo.

91
00:05:54,490 --> 00:06:00,370
Si desidera invece essere in grado di verificare che si sta fornendo l'accesso alle

92
00:06:00,370 --> 00:06:08,250
informazioni del profilo a un provider di servizi autenticato o a un server autenticato.

93
00:06:08,250 --> 00:06:12,610
Ora, questo è dove la tua applicazione client o il server Express qui,

94
00:06:12,610 --> 00:06:18,535
ad esempio, si registrerà su Facebook con un account che dice che sto gestendo un'app

95
00:06:18,535 --> 00:06:25,780
e voglio registrarmi come potenziale fonte che può

96
00:06:25,780 --> 00:06:29,680
avvicinarti per autenticare gli utenti quando forniscono

97
00:06:29,680 --> 00:06:33,859
l'accesso a il loro profilo che viene memorizzato sul tuo sito.

98
00:06:33,859 --> 00:06:35,335
Quindi, il server Express,

99
00:06:35,335 --> 00:06:37,645
in questo caso fungendo da applicazione client,

100
00:06:37,645 --> 00:06:45,790
si registrerà su Facebook e otterrà un ClientID e un segreto client da Facebook.

101
00:06:45,790 --> 00:06:48,955
Ora, quando il server Express si registra su Facebook,

102
00:06:48,955 --> 00:06:52,240
devi avere un account su Facebook,

103
00:06:52,240 --> 00:06:53,950
un account autenticato su Facebook,

104
00:06:53,950 --> 00:06:59,030
che userai per configurare questa app su Facebook.

105
00:06:59,030 --> 00:07:01,450
Quindi, una volta che ti registri,

106
00:07:01,450 --> 00:07:06,680
avrai accesso a un ClientID e a un segreto del cliente.

107
00:07:06,680 --> 00:07:08,650
Ora, il server delle risorse,

108
00:07:08,650 --> 00:07:12,310
come ho detto, è il server che ospita i dati protetti.

109
00:07:12,310 --> 00:07:18,665
Dati protetti significa il profilo dell'utente che desidera accedere al server Express.

110
00:07:18,665 --> 00:07:22,300
Quindi, il server Express vuole accedere a questo server

111
00:07:22,300 --> 00:07:28,415
di risorse e ottenere i dati del profilo dell'utente che desidera accedere al server Express.

112
00:07:28,415 --> 00:07:31,265
Quindi, vedi la relazione qui.

113
00:07:31,265 --> 00:07:33,355
Quindi, quando parlo di un'applicazione client,

114
00:07:33,355 --> 00:07:36,535
non intendo la loro applicazione front-end,

115
00:07:36,535 --> 00:07:40,000
ma il loro server Express che sta cercando di fornire

116
00:07:40,000 --> 00:07:44,190
l'accesso alle risorse che ha sul suo sito.

117
00:07:44,190 --> 00:07:45,635
Ma il server Express,

118
00:07:45,635 --> 00:07:48,940
al fine di consentirti di accedere,

119
00:07:48,940 --> 00:07:53,200
avrà bisogno di accedere al tuo server di risorse Facebook che

120
00:07:53,200 --> 00:07:58,655
ti autenticherà e fornirà le informazioni del tuo profilo al server Express.

121
00:07:58,655 --> 00:08:01,375
Quindi, il server delle risorse di cui sto parlando qui,

122
00:08:01,375 --> 00:08:06,190
è il server di autenticazione OAuth 2 di Facebook

123
00:08:06,190 --> 00:08:11,681
più il server delle risorse che ti dà accesso alle informazioni del profilo dell'utente.

124
00:08:11,681 --> 00:08:16,180
E il server di autorizzazione è il server che

125
00:08:16,180 --> 00:08:19,210
autorizzerà qualcuno ad accedere

126
00:08:19,210 --> 00:08:22,825
al server delle risorse per recuperare le informazioni del profilo.

127
00:08:22,825 --> 00:08:27,375
Ora, l'utente è quello che ha le informazioni sul profilo sul server delle risorse.

128
00:08:27,375 --> 00:08:30,610
L' utente deve autorizzare il server Express ad accedere

129
00:08:30,610 --> 00:08:34,035
a questo server delle risorse per recuperare le informazioni del profilo.

130
00:08:34,035 --> 00:08:37,000
Ma se l'utente ha bisogno di autorizzare il server Express,

131
00:08:37,000 --> 00:08:40,045
l'utente deve accedere all'account Facebook

132
00:08:40,045 --> 00:08:45,115
e quindi ottenere informazioni da Facebook chiamato come token di accesso,

133
00:08:45,115 --> 00:08:48,995
che l'utente poi passerà al server Express.

134
00:08:48,995 --> 00:08:54,750
Ora, quando il token di accesso viene ottenuto da Facebook tramite il protocollo OAuth 2,

135
00:08:54,750 --> 00:08:58,090
il token di accesso verrà emesso in termini

136
00:08:58,090 --> 00:09:01,675
di consentire questa applicazione client o il server Express,

137
00:09:01,675 --> 00:09:04,885
che è già registrato su Facebook dicendo che

138
00:09:04,885 --> 00:09:08,020
questo server client autorizzerò ad

139
00:09:08,020 --> 00:09:15,265
accedere le loro informazioni sul profilo dal loro fornitore di servizi OAuth di Facebook.

140
00:09:15,265 --> 00:09:18,290
Quindi, ancora una volta, questo è un po 'confuso.

141
00:09:18,290 --> 00:09:20,940
Vedremo un diagramma in cui questo flusso di

142
00:09:20,940 --> 00:09:24,360
informazioni è spiegato un po 'più chiaramente a voi.

143
00:09:24,360 --> 00:09:32,380
Un punto che ho appena menzionato riguarda un token OAuth o il token di accesso.

144
00:09:32,380 --> 00:09:34,090
Cos' è questo token di accesso?

145
00:09:34,090 --> 00:09:38,675
Il token di accesso è qualcosa che il server di autorizzazione emette per te.

146
00:09:38,675 --> 00:09:40,620
Quale server di autorizzazione?

147
00:09:40,620 --> 00:09:44,100
Questo è il server di autorizzazione OAuth 2 di terze parti,

148
00:09:44,100 --> 00:09:46,668
server di Facebook, in questo esempio.

149
00:09:46,668 --> 00:09:51,130
Quindi sono un'applicazione server Express.

150
00:09:51,130 --> 00:09:54,485
Ora, voi, come loro utente front-end

151
00:09:54,485 --> 00:09:58,070
, volete accedere a qualcosa dall'applicazione server Express.

152
00:09:58,070 --> 00:10:02,150
L' applicazione server Express ti dirà che

153
00:10:02,150 --> 00:10:06,666
ti autentichi da Facebook e quindi ottieni il token di accesso da Facebook.

154
00:10:06,666 --> 00:10:09,770
Questo token di accesso viene rilasciato

155
00:10:09,770 --> 00:10:16,330
all'utente front-end da Facebook quando l'utente accede al proprio account Facebook.

156
00:10:16,330 --> 00:10:21,155
Ora questo token di accesso viene emesso nel nome dell'applicazione client,

157
00:10:21,155 --> 00:10:25,060
server Express, che si è già registrata su Facebook.

158
00:10:25,060 --> 00:10:30,485
Quindi, affinché l'utente acceda a Facebook per ottenere il suo token di accesso,

159
00:10:30,485 --> 00:10:36,580
l'utente richiede l'ID client dell'applicazione client o dell'applicazione Express.

160
00:10:36,580 --> 00:10:39,755
Quindi questo ID client è incorporato

161
00:10:39,755 --> 00:10:44,460
nell'applicazione front-end che questo server Express servirà per voi.

162
00:10:44,460 --> 00:10:47,915
Quindi il server Express sta servendo un sito Web a cui si sta accedendo,

163
00:10:47,915 --> 00:10:50,820
quindi quel sito Web conterrà

164
00:10:50,820 --> 00:10:56,597
il codice in cui l'ID client di quel server Express è già incorporato in lì.

165
00:10:56,597 --> 00:11:00,110
Un' altra informazione di cui ho parlato è un segreto del cliente.

166
00:11:00,110 --> 00:11:03,855
Ora, nel flusso di autenticazione di cui parlerò,

167
00:11:03,855 --> 00:11:07,640
il segreto del cliente non verrà mai rivelato a nessuno.

168
00:11:07,640 --> 00:11:11,700
Il segreto client sarà solo sul lato server Express.

169
00:11:11,700 --> 00:11:15,335
Quando il server Express tenta di autenticare e

170
00:11:15,335 --> 00:11:20,600
ottenere l'accesso al profilo dell'utente da Facebook,

171
00:11:20,600 --> 00:11:23,795
l'applicazione client, il server Express

172
00:11:23,795 --> 00:11:27,490
invierà sia l'ID client che il segreto client,

173
00:11:27,490 --> 00:11:32,555
insieme al token di accesso che l'utente fornisce a Facebook.

174
00:11:32,555 --> 00:11:34,988
E Facebook, a sua volta,

175
00:11:34,988 --> 00:11:38,945
autorizza la loro applicazione client ad accedere

176
00:11:38,945 --> 00:11:43,935
al server delle risorse al fine di ottenere i dati del profilo dell'utente.

177
00:11:43,935 --> 00:11:50,390
E una volta che i dati del profilo dell'utente sono ottenuti dal server delle risorse di Facebook,

178
00:11:50,390 --> 00:11:54,530
allora il mio server Express sta per creare un account

179
00:11:54,530 --> 00:11:59,383
per questo particolare utente che li ha registrati con il loro account Facebook.

180
00:11:59,383 --> 00:12:05,995
Quindi, successivamente, fornire un token Web JSON all'utente,

181
00:12:05,995 --> 00:12:09,190
che l'utente può quindi utilizzare per accedere

182
00:12:09,190 --> 00:12:12,530
alle risorse memorizzate sul server Express.

183
00:12:12,530 --> 00:12:15,040
Quindi, ancora una volta, per riassumere questo,

184
00:12:15,040 --> 00:12:20,387
ho un diagramma qui per spiegarvi questo in modo un po 'più dettagliato.

185
00:12:20,387 --> 00:12:22,000
Oltre a questo,

186
00:12:22,000 --> 00:12:24,225
c'è anche un token di aggiornamento.

187
00:12:24,225 --> 00:12:29,910
Quando un token di accesso viene rilasciato dal server OAuth 2 di Facebook,

188
00:12:29,910 --> 00:12:31,875
il token di accesso ha una durata limitata.

189
00:12:31,875 --> 00:12:34,750
Successivamente, il token di accesso diventerà non valido.

190
00:12:34,750 --> 00:12:39,203
Quindi il token di accesso deve essere mantenuto confidenziale.

191
00:12:39,203 --> 00:12:43,285
Quindi tutto questo scambio di token tra i diversi siti

192
00:12:43,285 --> 00:12:48,040
sarà fatto in una materia crittografata utilizzando il protocollo HTTPS.

193
00:12:48,040 --> 00:12:50,980
Quindi assicurati che quando invii il token di accesso dall'

194
00:12:50,980 --> 00:12:56,838
applicazione front-end utente al server Express,

195
00:12:56,838 --> 00:13:02,146
invierai il token di accesso solo tramite HTTPS, non HTTP.

196
00:13:02,146 --> 00:13:04,930
Questo è molto importante perché non

197
00:13:04,930 --> 00:13:08,110
vuoi che il tuo token di accesso venga rivelato a nessuno perché

198
00:13:08,110 --> 00:13:10,960
chiunque possa ottenere uno dei tuoi token di accesso può fingere di essere

199
00:13:10,960 --> 00:13:15,130
la loro applicazione client e quindi ottenere l'accesso al tuo profilo utente.

200
00:13:15,130 --> 00:13:16,820
Quindi questo è molto importante.

201
00:13:16,820 --> 00:13:20,005
Ora, poiché il token di accesso ha una durata limitata,

202
00:13:20,005 --> 00:13:22,495
esiste anche un token di aggiornamento corrispondente,

203
00:13:22,495 --> 00:13:27,550
che può essere utilizzato per aggiornare un token di accesso scaduto.

204
00:13:27,550 --> 00:13:30,790
Ora, nel tipo di flusso che useremo

205
00:13:30,790 --> 00:13:35,500
con la nostra applicazione nell'esercizio,

206
00:13:35,500 --> 00:13:38,285
non saremo in grado di utilizzare il token di aggiornamento.

207
00:13:38,285 --> 00:13:41,620
Ogni volta che l'utente desidera autorizzare

208
00:13:41,620 --> 00:13:46,070
il server Express ad andare a recuperare le informazioni del profilo da Facebook,

209
00:13:46,070 --> 00:13:48,470
l'utente dovrà fornire esplicitamente

210
00:13:48,470 --> 00:13:52,736
un nuovo token di accesso ottenuto da Facebook.

211
00:13:52,736 --> 00:13:56,665
L' unica parte che ho appena menzionato brevemente,

212
00:13:56,665 --> 00:13:58,221
ma non ho elaborato,

213
00:13:58,221 --> 00:14:01,920
è come funziona l'applicazione client, il server Express,

214
00:14:01,920 --> 00:14:07,260
le scale, come si registra nel provider di servizi OAuth 2?

215
00:14:07,260 --> 00:14:11,440
Ora, questo è dove molti dei provider di servizi OAuth 2

216
00:14:11,440 --> 00:14:16,705
forniscono un modo per registrare un'app sul loro sito.

217
00:14:16,705 --> 00:14:18,050
Quindi un'applicazione client,

218
00:14:18,050 --> 00:14:20,485
i server Express nel nostro esempio,

219
00:14:20,485 --> 00:14:25,875
si registrerà come applicazione client sul provider di servizi OAuth.

220
00:14:25,875 --> 00:14:27,460
Quindi, come vedrete nell'esercizio,

221
00:14:27,460 --> 00:14:31,795
il primo passo che faremo è quello di accedere a Facebook con

222
00:14:31,795 --> 00:14:37,795
il nostro account e quindi creare un'app sul sito Facebook.

223
00:14:37,795 --> 00:14:44,020
Quando lo fai, Facebook ti emetterà un ID app client e un segreto client.

224
00:14:44,020 --> 00:14:47,830
Questa procedura si applica a molti altri provider di servizi OAuth perché

225
00:14:47,830 --> 00:14:51,960
questo è il flusso generale di cui parla il protocollo OAuth 2.

226
00:14:51,960 --> 00:14:57,130
Quindi l'ID dell'app client e il segreto del client sono utili per essere in

227
00:14:57,130 --> 00:15:02,320
grado di dimostrare

228
00:15:02,320 --> 00:15:08,960
la nostra identità al server OAuth quando passiamo un token di accesso che otteniamo dall'utente.

229
00:15:08,960 --> 00:15:11,500
Ora, c'è anche un URL di reindirizzamento che devi

230
00:15:11,500 --> 00:15:14,650
registrare quando stai registrando l'applicazione client,

231
00:15:14,650 --> 00:15:18,520
e vedrai che eseguo nei passaggi che registro

232
00:15:18,520 --> 00:15:23,410
l'app sul sito di Facebook.

233
00:15:23,410 --> 00:15:26,380
Ora, per riassumere il flusso di informazioni di

234
00:15:26,380 --> 00:15:29,765
cui abbiamo appena parlato brevemente nel caso precedente,

235
00:15:29,765 --> 00:15:31,855
consentitemi di iniziare da questo punto.

236
00:15:31,855 --> 00:15:35,295
Il primo punto da guardare è il proprietario della risorsa.

237
00:15:35,295 --> 00:15:39,355
Quindi il proprietario della risorsa qui è l'utente che

238
00:15:39,355 --> 00:15:43,660
utilizzerà il suo account di social media.

239
00:15:43,660 --> 00:15:45,625
Facebook, in questo esempio,

240
00:15:45,625 --> 00:15:49,490
ha l'autenticazione per l'utente.

241
00:15:49,490 --> 00:15:54,515
Quindi il proprietario della risorsa è quello che ha il profilo sulla risorsa.

242
00:15:54,515 --> 00:15:57,760
E queste informazioni del profilo per ogni account Facebook,

243
00:15:57,760 --> 00:16:00,535
sono state memorizzate sul server di Facebook.

244
00:16:00,535 --> 00:16:05,067
E così il server di Facebook fornisce il server delle risorse qui.

245
00:16:05,067 --> 00:16:08,410
Quindi questo è il provider di servizi OAuth che vedi

246
00:16:08,410 --> 00:16:12,691
sul lato destro di questa immagine qui.

247
00:16:12,691 --> 00:16:17,320
Quindi immagina il server di Facebook sul lato destro, quell'applicazione client,

248
00:16:17,320 --> 00:16:18,928
che ha il server API resto,

249
00:16:18,928 --> 00:16:20,477
il server Express che abbiamo implementato,

250
00:16:20,477 --> 00:16:22,270
è un'applicazione client in questo caso

251
00:16:22,270 --> 00:16:24,700
e il proprietario della risorsa è l'utente.

252
00:16:24,700 --> 00:16:28,780
URL utente front-end, che sta per

253
00:16:28,780 --> 00:16:33,510
autorizzare ad andare su Facebook per verificare le credenziali dell'utente.

254
00:16:33,510 --> 00:16:39,245
Quindi, quando si desidera accedere alle informazioni sul lato client,

255
00:16:39,245 --> 00:16:44,355
si dovrà prima andare e

256
00:16:44,355 --> 00:16:47,730
autorizzare questa applicazione client per essere in grado di

257
00:16:47,730 --> 00:16:51,673
ottenere l'accesso alle informazioni del profilo.

258
00:16:51,673 --> 00:16:52,855
Quindi l'applicazione client,

259
00:16:52,855 --> 00:16:55,120
se agisce come un'app web,

260
00:16:55,120 --> 00:17:00,095
fornirà un pulsante appropriato lì dicendo di accedere utilizzando Facebook.

261
00:17:00,095 --> 00:17:01,740
E così quando si fa clic sul pulsante,

262
00:17:01,740 --> 00:17:04,780
essenzialmente, viene avviato il primo passo.

263
00:17:04,780 --> 00:17:07,375
La richiesta di autorizzazione utente viene avviata.

264
00:17:07,375 --> 00:17:09,270
Quindi l'applicazione client,

265
00:17:09,270 --> 00:17:10,910
attraverso l'agente utente,

266
00:17:10,910 --> 00:17:17,409
l'agente utente è fondamentalmente l'applicazione client, l'applicazione front-end.

267
00:17:17,409 --> 00:17:22,725
Potrebbe essere l'app angolare che abbiamo sviluppato o quella app mobile, che

268
00:17:22,725 --> 00:17:25,950
si tratti di Ionic o se si tratta di

269
00:17:25,950 --> 00:17:30,120
un'app NativeScript che abbiamo sviluppato nei corsi precedenti

270
00:17:30,120 --> 00:17:37,807
nella specializzazione o anche di un'app nativa come un'app iOS o un'app Android.

271
00:17:37,807 --> 00:17:39,060
Tutti questi agiscono come agente utente.

272
00:17:39,060 --> 00:17:42,360
Quindi l'agente utente,

273
00:17:42,360 --> 00:17:45,420
usano un processo di richiesta di autorizzazione attraverso

274
00:17:45,420 --> 00:17:48,360
l'agente utente al server di autorizzazione,

275
00:17:48,360 --> 00:17:50,500
che è il server di Facebook.

276
00:17:50,500 --> 00:17:52,235
Ora, quando questo viene passato,

277
00:17:52,235 --> 00:17:55,796
allora il proprietario della risorsa o l'utente,

278
00:17:55,796 --> 00:18:01,065
che sta cercando di dare accesso al suo profilo a questa applicazione client,

279
00:18:01,065 --> 00:18:03,690
dovrà autorizzare Facebook per essere

280
00:18:03,690 --> 00:18:06,600
in grado di condividere queste informazioni con l'applicazione client.

281
00:18:06,600 --> 00:18:11,250
Nell' approccio di concessione di flusso implicito che stiamo usando nel

282
00:18:11,250 --> 00:18:16,025
nostro esempio qui e anche nell'esercizio che segue,

283
00:18:16,025 --> 00:18:18,390
l'approccio di concessione di flusso implicito è

284
00:18:18,390 --> 00:18:22,875
l'approccio più adatto quando si implementa un'app Web utilizzando

285
00:18:22,875 --> 00:18:26,563
un framework come Angular o l'app mobile ibrida

286
00:18:26,563 --> 00:18:30,925
con Ionic o un NativeScript o anche un'app nativa.

287
00:18:30,925 --> 00:18:34,320
L' approccio di concessione del flusso implicito è molto più semplice per

288
00:18:34,320 --> 00:18:39,170
gestire OAuth 2 per questo tipo di applicazioni.

289
00:18:39,170 --> 00:18:43,930
Quindi il proprietario della risorsa fa clic sul pulsante di accesso,

290
00:18:43,930 --> 00:18:49,710
quindi il server di autorizzazione chiederà al proprietario della risorsa con le informazioni che dicono:

291
00:18:49,710 --> 00:18:54,330
«Questa applicazione client desidera accedere alle informazioni del profilo.

292
00:18:54,330 --> 00:18:55,725
Lo autorizzi?»

293
00:18:55,725 --> 00:18:58,965
E così questo sarà spuntato da Facebook,

294
00:18:58,965 --> 00:19:01,860
e poi si farà clic su un pulsante lì dicendo, «

295
00:19:01,860 --> 00:19:05,278
Sì, autorizzo questa applicazione client ad accedere per mio conto.»

296
00:19:05,278 --> 00:19:06,645
Quindi, su quel punto,

297
00:19:06,645 --> 00:19:08,680
il server di autorizzazione su Facebook,

298
00:19:08,680 --> 00:19:11,190
il server di autorizzazione OAuth 2 su Facebook,

299
00:19:11,190 --> 00:19:13,380
genererà un token di accesso.

300
00:19:13,380 --> 00:19:15,105
Per generare questo token di accesso,

301
00:19:15,105 --> 00:19:20,405
farà uso dell'ID client per questa applicazione client,

302
00:19:20,405 --> 00:19:22,535
l'applicazione server Express che registriamo.

303
00:19:22,535 --> 00:19:28,165
Quindi l'ID client dovrebbe essere parte dell'agente utente utilizzato da questo utente.

304
00:19:28,165 --> 00:19:33,093
Quindi questo ID client verrà incorporato nell'app Angular,

305
00:19:33,093 --> 00:19:38,585
nell'app Ionic o nell'app NativeScript o anche in un'app iOS o Android.

306
00:19:38,585 --> 00:19:40,560
Quindi l'ID client verrà quindi utilizzato dall'

307
00:19:40,560 --> 00:19:43,410
agente utente per trasformare il server di autorizzazione dicendo:

308
00:19:43,410 --> 00:19:48,108
«Questa applicazione client vuole accedere al mio profilo

309
00:19:48,108 --> 00:19:52,704
e sono disposto ad autorizzarti a consentire l'accesso al profilo».

310
00:19:52,704 --> 00:19:53,760
Quindi, a quel punto,

311
00:19:53,760 --> 00:19:59,290
il server di autorizzazione invierà un token di accesso all'agente utente in questo caso.

312
00:19:59,290 --> 00:20:02,670
Quindi, ricorda, questo token di accesso entra nell'agente utente,

313
00:20:02,670 --> 00:20:09,180
che è l'app mobile o la loro app angolare implementata da noi.

314
00:20:09,180 --> 00:20:12,870
Quindi questo agente utente prenderà questo token di accesso e

315
00:20:12,870 --> 00:20:18,479
quindi passerà questo token di accesso a tale applicazione client.

316
00:20:18,479 --> 00:20:20,310
Quindi l'OAuth per accedere,

317
00:20:20,310 --> 00:20:23,305
ma il token di accesso verrà passato all'applicazione client,

318
00:20:23,305 --> 00:20:25,200
il server Express in questo caso,

319
00:20:25,200 --> 00:20:32,340
in una particolare route sul router dell'utente,

320
00:20:32,340 --> 00:20:37,465
la route di autenticazione sul sito dell'applicazione client.

321
00:20:37,465 --> 00:20:41,000
Ora, in precedenza, abbiamo visto l'uso dell'autenticazione locale,

322
00:20:41,000 --> 00:20:45,985
dove abbiamo inviato una richiesta per tagliare l'utente barra di accesso.

323
00:20:45,985 --> 00:20:48,250
Ora, affinché questo funzioni nella nostra app, ne

324
00:20:48,250 --> 00:20:50,580
imposteremo un altro su utenti barra,

325
00:20:50,580 --> 00:20:54,095
barra Facebook, token barra, e così via.

326
00:20:54,095 --> 00:21:02,500
Quindi un altro URL su cui forniamo questo token di accesso al server Express.

327
00:21:02,500 --> 00:21:06,280
Ora, quando questo token di accesso viene ottenuto dal server Express,

328
00:21:06,280 --> 00:21:09,630
il server Express prenderà questo token di accesso

329
00:21:09,630 --> 00:21:14,240
e quindi insieme al suo ID client e al segreto client,

330
00:21:14,240 --> 00:21:20,200
invierà queste informazioni al server di autorizzazione.

331
00:21:20,200 --> 00:21:25,140
E il server di autorizzazione consentirà quindi alla propria applicazione client

332
00:21:25,140 --> 00:21:30,565
di accedere al server delle risorse al fine di ottenere le informazioni del profilo.

333
00:21:30,565 --> 00:21:35,060
E così le informazioni del profilo verranno restituite nel passaggio numero sei, di

334
00:21:35,060 --> 00:21:37,890
nuovo all'applicazione client in questo caso.

335
00:21:37,890 --> 00:21:42,015
Pertanto, quando l'applicazione client ottiene le informazioni sul profilo per l'utente,

336
00:21:42,015 --> 00:21:46,380
l'applicazione client creerà un nuovo account per

337
00:21:46,380 --> 00:21:51,785
l'utente su ogni sito se non esiste un account.

338
00:21:51,785 --> 00:21:56,090
Se l'utente ha già effettuato l'accesso in precedenza utilizzando il proprio ID Facebook,

339
00:21:56,090 --> 00:22:00,045
esiste già un account in modo che l'applicazione client e il server API Rest eseguano

340
00:22:00,045 --> 00:22:05,485
semplicemente un controllo incrociato per vedere che questo account utente esiste già.

341
00:22:05,485 --> 00:22:06,865
E, a quel punto,

342
00:22:06,865 --> 00:22:12,550
l'utente viene autenticato alla funzionalità di accesso di terze parti

343
00:22:12,550 --> 00:22:18,321
fornita dal servizio di autenticazione OAuth 2 di Facebook.

344
00:22:18,321 --> 00:22:23,275
A quel punto, l'applicazione client genererà un token Web JSON,

345
00:22:23,275 --> 00:22:26,010
nell'esempio che implementeremo ed eserciteremo,

346
00:22:26,010 --> 00:22:33,040
e quindi passerà questo token Web JSON all'agente utente o all'applicazione front-end,

347
00:22:33,040 --> 00:22:35,845
o all'app Angular, o all'app Ionic

348
00:22:35,845 --> 00:22:38,590
o all'app NativeScript.

349
00:22:38,590 --> 00:22:45,160
Quindi il token Web JSON verrà successivamente utilizzato dall'utente

350
00:22:45,160 --> 00:22:48,790
per autenticarsi ogni volta che desidera

351
00:22:48,790 --> 00:22:53,145
accedere a qualsiasi risorsa memorizzata sul server Express.

352
00:22:53,145 --> 00:22:55,505
Quindi, una volta ottenuto il token Web JSON,

353
00:22:55,505 --> 00:23:00,975
tutte le operazioni successive, hai già visto come farlo con JSON Web Token.

354
00:23:00,975 --> 00:23:03,565
Quindi, una volta ottenuto il token Web JSON,

355
00:23:03,565 --> 00:23:05,070
il tuo lavoro è fatto

356
00:23:05,070 --> 00:23:10,150
e quindi puoi procedere in avanti con la normale operazione da quel punto in poi.

357
00:23:10,150 --> 00:23:12,940
Ora, quando il token Web JSON scade,

358
00:23:12,940 --> 00:23:17,618
devi passare attraverso l'intero processo di ri-autenticazione te stesso e,

359
00:23:17,618 --> 00:23:22,990
successivamente, consentire agli utenti di accedere alle informazioni sul tuo sito.

360
00:23:22,990 --> 00:23:29,710
Quindi, con questa rapida comprensione di come funzionano le operazioni OAuth 2

361
00:23:29,710 --> 00:23:33,385
, di nuovo, come vedi, ci sono molti dettagli qui.

362
00:23:33,385 --> 00:23:38,950
Ma, fortunatamente, non abbiamo a che fare con tutti questi dettagli perché useremo

363
00:23:38,950 --> 00:23:46,285
un modulo nodo che si occupa di gran parte di questi dettagli per nostro conto.

364
00:23:46,285 --> 00:23:52,195
Dal momento che abbiamo già impostato il nostro server Express per utilizzare Passport,

365
00:23:52,195 --> 00:24:00,980
ora possiamo utilizzare un altro codice modulo nodo come modulo Passport-Facebook-Token.

366
00:24:00,980 --> 00:24:04,595
Il modulo Passport-Facebook-Token implementa essenzialmente

367
00:24:04,595 --> 00:24:08,580
l'approccio di concessione implicita di cui ho parlato prima.

368
00:24:08,580 --> 00:24:11,320
E poi è possibile inizializzare

369
00:24:11,320 --> 00:24:18,160
una nuova strategia nella strategia Passport, all'interno della vostra applicazione.

370
00:24:18,160 --> 00:24:22,720
In questo modo il modulo Passport-Facebook-Token consente di impostare

371
00:24:22,720 --> 00:24:31,090
una nuova strategia di autenticazione Passport per utilizzare l'API OAuth 2 basata su Facebook.

372
00:24:31,090 --> 00:24:36,085
E così per fare uso di questo modulo,

373
00:24:36,085 --> 00:24:41,615
si installa questo dicendo passato npm install passport- facebook-token,

374
00:24:41,615 --> 00:24:44,980
meno meno salvare, e poi una volta installato che,

375
00:24:44,980 --> 00:24:51,010
allora si configura una strategia di Facebook all'interno della vostra applicazione, e, successivamente,

376
00:24:51,010 --> 00:24:57,810
fare uso di questo per configurare la strategia per il tuo Passport per

377
00:24:57,810 --> 00:25:04,990
utilizzare se stiamo facendo uso dell'autenticazione basata su OAuth 2 per la nostra applicazione.

378
00:25:04,990 --> 00:25:09,270
Con questa rapida comprensione di OAuth 2,

379
00:25:09,270 --> 00:25:11,770
passiamo all'esercizio,

380
00:25:11,770 --> 00:25:16,630
dove configureremo il nostro server Express in modo da utilizzare effettivamente

381
00:25:16,630 --> 00:25:20,920
questo approccio implicito di concessione per consentirci di

382
00:25:20,920 --> 00:25:25,450
verificare la nostra identità al server Express e,

383
00:25:25,450 --> 00:25:29,745
successivamente, ottenere l'accesso alle risorse, ai piatti,

384
00:25:29,745 --> 00:25:38,180
le promozioni e le informazioni dei leader che sono memorizzate sul nostro server Express.