1
00:00:03,620 --> 00:00:09,015
Estoy seguro de que tienes una o más cuentas de redes sociales.

2
00:00:09,015 --> 00:00:13,920
Ya sea Facebook, Twitter, YouTube, Google, GitHub,

3
00:00:13,920 --> 00:00:19,760
o muchos otros proveedores de servicios de este tipo, donde registró teléfono y cuenta.

4
00:00:19,760 --> 00:00:22,545
Ahora, estos proveedores de servicios, a su vez,

5
00:00:22,545 --> 00:00:27,480
están dispuestos a proporcionar servicios de autenticación en su nombre.

6
00:00:27,480 --> 00:00:32,880
Así, por ejemplo, ve la proliferación de una serie de sitios web

7
00:00:32,880 --> 00:00:37,440
y aplicaciones móviles donde se le permite iniciar sesión

8
00:00:37,440 --> 00:00:40,260
usando sus cuentas de redes sociales.

9
00:00:40,260 --> 00:00:42,805
Ahora, ¿cómo funciona esto realmente?

10
00:00:42,805 --> 00:00:47,270
Muchos de estos proveedores de cuentas de redes sociales actúan

11
00:00:47,270 --> 00:00:53,945
como proveedores de servicios de autenticación mediante un protocolo llamado OAuth.

12
00:00:53,945 --> 00:01:00,660
Vamos a ver OAuth y cómo permite a estos proveedores de autenticación de terceros

13
00:01:00,660 --> 00:01:04,995
proporcionar autenticación en su nombre,

14
00:01:04,995 --> 00:01:14,183
y le permite iniciar sesión en otros servicios utilizando sus cuentas de redes sociales.

15
00:01:14,183 --> 00:01:18,510
Estoy seguro de que es posible que haya oído al pasar acerca de OAuth 1 y OAuth 2,

16
00:01:18,510 --> 00:01:21,370
y que podría haber escuchado a personas

17
00:01:21,370 --> 00:01:24,669
que dicen que Facebook proporciona autenticación basada en OAuth 2,

18
00:01:24,669 --> 00:01:28,450
o Google proporciona autenticación basada en OAuth 2, etc.

19
00:01:28,450 --> 00:01:29,800
Estoy seguro de que debe preguntarse,

20
00:01:29,800 --> 00:01:35,240
¿qué son exactamente estos OAuth1 y OAuth 2 destinados a ser?

21
00:01:35,240 --> 00:01:40,090
Ahora, OAuth1 y OAuth 2 son marcos de autorización

22
00:01:40,090 --> 00:01:42,920
que se basan en estándares abiertos.

23
00:01:42,920 --> 00:01:46,110
Y estos se pueden utilizar a través de Internet para autenticar

24
00:01:46,110 --> 00:01:50,375
su identidad en muchos sitios web o aplicaciones móviles.

25
00:01:50,375 --> 00:01:52,475
Ahora, cuando usas estos servicios,

26
00:01:52,475 --> 00:01:56,470
estás dependiendo de una de las cuentas de redes sociales como 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, y muchas más,

29
00:02:02,380 --> 00:02:06,915
que proporcionan estos servicios de autenticación para que otros los utilicen.

30
00:02:06,915 --> 00:02:10,465
Estos proveedores de servicios de autenticación prometen a

31
00:02:10,465 --> 00:02:15,310
los usuarios de estos servicios de autenticación que autenticarán la identidad

32
00:02:15,310 --> 00:02:18,535
del usuario en función del envío de

33
00:02:18,535 --> 00:02:24,100
sus credenciales para estos servicios de redes sociales.

34
00:02:24,100 --> 00:02:28,630
Ahora, hay un servicio complementario OpenID.

35
00:02:28,630 --> 00:02:34,220
Pero, por supuesto, no está relacionado con OAuth, pero proporciona un tipo de servicio similar.

36
00:02:34,220 --> 00:02:38,005
Pero la mayoría de los proveedores de servicios de redes sociales estándar,

37
00:02:38,005 --> 00:02:39,835
como verá aquí,

38
00:02:39,835 --> 00:02:44,290
ofrecen servicios basados en OAuth 2 en estos días.

39
00:02:44,290 --> 00:02:48,760
Ahora, como mencioné, OAuth1 y OAuth 2 son protocolos de autenticación,

40
00:02:48,760 --> 00:02:53,010
y OAuth 1 fue el primer protocolo que surgió.

41
00:02:53,010 --> 00:02:55,165
Esto fue evolucionado a partir de Twitter,

42
00:02:55,165 --> 00:02:58,725
Blaine Cook siendo la persona detrás de él,

43
00:02:58,725 --> 00:03:04,330
y esto está documentado en el Internet Engineering Task Force, RFC 5849.

44
00:03:04,330 --> 00:03:08,235
Entonces, si quieres leer los detalles sangrientos de cómo funcionan estos protocolos,

45
00:03:08,235 --> 00:03:11,350
ese es el lugar para encontrarlo. El

46
00:03:11,350 --> 00:03:18,430
protocolo OAuth 2 evolucionó a partir de OAuth 1 para hacerlo más simple

47
00:03:18,430 --> 00:03:23,420
y proporcionar una forma más simple para el desarrollo de clientes.

48
00:03:23,420 --> 00:03:29,050
Y esto está documentado en IETF RFC 6749 y luego,

49
00:03:29,050 --> 00:03:35,975
otro uso de token portador se produjo en IETF RFC 6750.

50
00:03:35,975 --> 00:03:38,155
Ahora, desde nuestra perspectiva,

51
00:03:38,155 --> 00:03:42,926
realmente no queremos entrar en detalles de cómo funcionan estos protocolos en realidad.

52
00:03:42,926 --> 00:03:45,640
En cambio, todo lo que nos interesa es,

53
00:03:45,640 --> 00:03:51,505
¿cómo aprovechamos estos para la autenticación de usuarios dentro de nuestra aplicación web,

54
00:03:51,505 --> 00:03:53,460
o dentro de nuestra aplicación móvil,

55
00:03:53,460 --> 00:03:56,215
cuando necesitamos autenticar al usuario

56
00:03:56,215 --> 00:03:59,965
en el servidor Express que hemos estado construyendo hasta ahora?

57
00:03:59,965 --> 00:04:04,330
Ahora, nos concentraremos principalmente en OAuth 2,

58
00:04:04,330 --> 00:04:05,710
porque en el ejercicio,

59
00:04:05,710 --> 00:04:10,960
veremos el uso de Facebook como un proveedor de servicios de autenticación OAuth 2

60
00:04:10,960 --> 00:04:13,870
, y aquí, necesitamos entender

61
00:04:13,870 --> 00:04:19,810
algunos términos para ver cómo funciona exactamente este protocolo OAuth 2.

62
00:04:19,810 --> 00:04:25,065
Al menos, los detalles básicos de cómo funciona el protocolo en sí.

63
00:04:25,065 --> 00:04:26,995
Ahora, en el caso de OAuth 2,

64
00:04:26,995 --> 00:04:30,440
siempre hablamos de la propiedad de un recurso.

65
00:04:30,440 --> 00:04:32,200
Ahora, en este caso,

66
00:04:32,200 --> 00:04:34,810
el recurso al que me refiero no es

67
00:04:34,810 --> 00:04:37,870
el recurso que está almacenado en el servidor Express.

68
00:04:37,870 --> 00:04:39,655
En cambio, el recurso al que nos referimos aquí,

69
00:04:39,655 --> 00:04:42,055
es la identidad del usuario.

70
00:04:42,055 --> 00:04:45,760
Ahora, cualquier servidor, como el servidor Express que hemos estado construyendo,

71
00:04:45,760 --> 00:04:48,310
quiere tener acceso a este recurso,

72
00:04:48,310 --> 00:04:50,000
esa es su identidad.

73
00:04:50,000 --> 00:04:51,760
Ahora, ¿dónde está tu identidad?

74
00:04:51,760 --> 00:04:54,160
Su identidad se almacena en uno de

75
00:04:54,160 --> 00:04:58,457
esos proveedores de servicios de autenticación de redes sociales como Facebook, etc.,

76
00:04:58,457 --> 00:05:03,140
porque ya ha creado una cuenta en estos sitios de redes sociales.

77
00:05:03,140 --> 00:05:06,920
Por lo tanto, su información o su información de identidad o

78
00:05:06,920 --> 00:05:11,020
su información de perfil se almacenan en Facebook, por ejemplo.

79
00:05:11,020 --> 00:05:15,550
Ahora, su servidor Express quiere obtener acceso a su identidad y

80
00:05:15,550 --> 00:05:20,650
verificar que realmente es usted quien está tratando de acceder al servidor Express.

81
00:05:20,650 --> 00:05:22,000
Por lo tanto, en este caso,

82
00:05:22,000 --> 00:05:24,690
el servidor Express que hemos desarrollado,

83
00:05:24,690 --> 00:05:27,390
actúa como la aplicación cliente.

84
00:05:27,390 --> 00:05:29,170
Por lo tanto, aquí es donde la aplicación cliente,

85
00:05:29,170 --> 00:05:33,265
que es el sitio web o la aplicación móvil que quiere

86
00:05:33,265 --> 00:05:38,905
acceder al servidor de recursos con el fin de obtener la información sobre usted.

87
00:05:38,905 --> 00:05:41,530
¿ Qué es un servidor de recursos del que estamos hablando?

88
00:05:41,530 --> 00:05:45,730
Este es el servidor de autenticación OAuth de Facebook,

89
00:05:45,730 --> 00:05:49,870
que también proporciona información de su perfil a petición.

90
00:05:49,870 --> 00:05:54,490
Ahora, por supuesto, no vas a seguir distribuyendo aleatoriamente la información de tu perfil.

91
00:05:54,490 --> 00:06:00,370
En su lugar, desea poder verificar que proporciona acceso a la

92
00:06:00,370 --> 00:06:08,250
información de su perfil a un proveedor de servicios autenticado o a un servidor autenticado.

93
00:06:08,250 --> 00:06:12,610
Ahora, aquí es donde su aplicación cliente o el servidor Express aquí,

94
00:06:12,610 --> 00:06:18,535
por ejemplo, se registrarán en Facebook con una cuenta que dice que estoy operando una aplicación,

95
00:06:18,535 --> 00:06:25,780
y quiero registrarme como una fuente potencial que puede

96
00:06:25,780 --> 00:06:29,680
acercarse a usted para autenticar usuarios cuando proporcionan

97
00:06:29,680 --> 00:06:33,859
acceso a su perfil que está almacenado en su sitio.

98
00:06:33,859 --> 00:06:35,335
Por lo tanto, el servidor Express,

99
00:06:35,335 --> 00:06:37,645
en este caso actuando como la aplicación cliente,

100
00:06:37,645 --> 00:06:45,790
se registrará en Facebook y obtendrá un ClientID y un secreto de cliente de Facebook.

101
00:06:45,790 --> 00:06:48,955
Ahora, cuando el servidor Express se registre en Facebook,

102
00:06:48,955 --> 00:06:52,240
necesita tener una cuenta en Facebook,

103
00:06:52,240 --> 00:06:53,950
una cuenta autenticada en Facebook,

104
00:06:53,950 --> 00:06:59,030
que usará para configurar esta aplicación en Facebook.

105
00:06:59,030 --> 00:07:01,450
Por lo tanto, una vez que

106
00:07:01,450 --> 00:07:06,680
te registres, obtendrás acceso a un ClientID y a un secreto de cliente.

107
00:07:06,680 --> 00:07:08,650
Ahora, el servidor de recursos,

108
00:07:08,650 --> 00:07:12,310
como mencioné, es el servidor que aloja los datos protegidos.

109
00:07:12,310 --> 00:07:18,665
Datos protegidos, es decir, el perfil del usuario que desea acceder al servidor Express.

110
00:07:18,665 --> 00:07:22,300
Por lo tanto, el servidor Express quiere acceder a este servidor

111
00:07:22,300 --> 00:07:28,415
de recursos y obtener los datos de perfil del usuario que desea acceder al servidor Express.

112
00:07:28,415 --> 00:07:31,265
Así que, ves la relación aquí.

113
00:07:31,265 --> 00:07:33,355
Por lo tanto, cuando hablo de una aplicación cliente,

114
00:07:33,355 --> 00:07:36,535
no me refiero a su aplicación front-end,

115
00:07:36,535 --> 00:07:40,000
sino a su servidor Express que está tratando de proporcionarle

116
00:07:40,000 --> 00:07:44,190
acceso a los recursos que tiene en su sitio.

117
00:07:44,190 --> 00:07:45,635
Pero el servidor Express,

118
00:07:45,635 --> 00:07:48,940
para permitirle acceder,

119
00:07:48,940 --> 00:07:53,200
necesitará acceso a su servidor de recursos de Facebook que

120
00:07:53,200 --> 00:07:58,655
lo autenticará y proporcionará su información de perfil al servidor Express.

121
00:07:58,655 --> 00:08:01,375
Por lo tanto, el servidor de recursos del que estoy hablando aquí,

122
00:08:01,375 --> 00:08:06,190
es el servidor de autenticación OAuth 2 de Facebook

123
00:08:06,190 --> 00:08:11,681
más el servidor de recursos que le da acceso a la información del perfil del usuario.

124
00:08:11,681 --> 00:08:16,180
Y el servidor de autorización es el servidor que

125
00:08:16,180 --> 00:08:19,210
autorizará a alguien a acceder

126
00:08:19,210 --> 00:08:22,825
al servidor de recursos para recuperar la información del perfil.

127
00:08:22,825 --> 00:08:27,375
Ahora, el usuario es el que tiene la información de perfil en el servidor de recursos.

128
00:08:27,375 --> 00:08:30,610
El usuario debe autorizar al servidor Express a ir

129
00:08:30,610 --> 00:08:34,035
a este servidor de recursos para obtener la información del perfil.

130
00:08:34,035 --> 00:08:37,000
Pero si el usuario necesita autorizar el servidor Express,

131
00:08:37,000 --> 00:08:40,045
el usuario debe iniciar sesión en la cuenta de Facebook,

132
00:08:40,045 --> 00:08:45,115
y luego obtener información de Facebook llamada como un token de acceso,

133
00:08:45,115 --> 00:08:48,995
que el usuario luego pasará al servidor Express.

134
00:08:48,995 --> 00:08:54,750
Ahora, cuando el token de acceso se obtiene de Facebook a través del protocolo OAuth 2,

135
00:08:54,750 --> 00:08:58,090
el token de acceso se emitirá en términos

136
00:08:58,090 --> 00:09:01,675
de permitir esta aplicación cliente o el servidor Express,

137
00:09:01,675 --> 00:09:04,885
que ya está registrado en Facebook diciendo que

138
00:09:04,885 --> 00:09:08,020
este servidor cliente voy a autorizar a

139
00:09:08,020 --> 00:09:15,265
acceder su información de perfil de su proveedor de servicios OAuth de Facebook.

140
00:09:15,265 --> 00:09:18,290
Así que, de nuevo, esto es un poco confuso.

141
00:09:18,290 --> 00:09:20,940
Veremos un diagrama donde este flujo de

142
00:09:20,940 --> 00:09:24,360
información se explica un poco más claramente a usted.

143
00:09:24,360 --> 00:09:32,380
Un punto que acabo de mencionar es sobre un token OAuth o el token de acceso.

144
00:09:32,380 --> 00:09:34,090
¿ Qué es este token de acceso?

145
00:09:34,090 --> 00:09:38,675
El token de acceso es algo que el servidor de autorización emite por usted.

146
00:09:38,675 --> 00:09:40,620
¿ Qué servidor de autorización?

147
00:09:40,620 --> 00:09:44,100
Este es el servidor de autorización de OAuth 2 de terceros,

148
00:09:44,100 --> 00:09:46,668
servidor de Facebook, en este ejemplo.

149
00:09:46,668 --> 00:09:51,130
Así que son aplicaciones de servidor Express.

150
00:09:51,130 --> 00:09:54,485
Ahora, usted, como su usuario front-end,

151
00:09:54,485 --> 00:09:58,070
quiere acceder a algo desde la aplicación del servidor Express.

152
00:09:58,070 --> 00:10:02,150
La aplicación del servidor Express le dirá que se autentica

153
00:10:02,150 --> 00:10:06,666
desde Facebook y luego obtiene el token de acceso de Facebook.

154
00:10:06,666 --> 00:10:09,770
Este token de acceso se emite

155
00:10:09,770 --> 00:10:16,330
al usuario front-end desde Facebook cuando el usuario inicia sesión en su cuenta de Facebook.

156
00:10:16,330 --> 00:10:21,155
Ahora este token de acceso se emite en el nombre de la aplicación cliente,

157
00:10:21,155 --> 00:10:25,060
servidor Express, que ya se ha registrado en Facebook.

158
00:10:25,060 --> 00:10:30,485
Por lo tanto, para que el usuario acceda a Facebook para obtener su token de acceso,

159
00:10:30,485 --> 00:10:36,580
el usuario requiere el ID de cliente de la aplicación cliente o la aplicación Express.

160
00:10:36,580 --> 00:10:39,755
Por lo tanto, este ID de cliente está integrado en

161
00:10:39,755 --> 00:10:44,460
la aplicación front-end que este servidor Express le servirá.

162
00:10:44,460 --> 00:10:47,915
Así que el servidor Express está sirviendo un sitio web al que está accediendo,

163
00:10:47,915 --> 00:10:50,820
entonces ese sitio web contendrá código donde

164
00:10:50,820 --> 00:10:56,597
el ID de cliente de ese servidor Express ya está incrustado allí.

165
00:10:56,597 --> 00:11:00,110
Una información más que mencioné es un secreto de cliente.

166
00:11:00,110 --> 00:11:03,855
Ahora, en el flujo de autenticación del que voy a hablar,

167
00:11:03,855 --> 00:11:07,640
el secreto del cliente nunca será revelado a nadie.

168
00:11:07,640 --> 00:11:11,700
El secreto del cliente estará solo en el lado del servidor Express.

169
00:11:11,700 --> 00:11:15,335
Cuando el servidor Express intenta autenticar y

170
00:11:15,335 --> 00:11:20,600
obtener acceso al perfil del usuario desde Facebook,

171
00:11:20,600 --> 00:11:23,795
la aplicación cliente, el servidor Express

172
00:11:23,795 --> 00:11:27,490
enviará tanto el ID del cliente como el secreto del cliente,

173
00:11:27,490 --> 00:11:32,555
junto con el token de acceso que el usuario le proporciona a Facebook.

174
00:11:32,555 --> 00:11:34,988
Y Facebook, a su vez,

175
00:11:34,988 --> 00:11:38,945
autoriza a su aplicación cliente a acceder

176
00:11:38,945 --> 00:11:43,935
al servidor de recursos para obtener los datos de perfil del usuario.

177
00:11:43,935 --> 00:11:50,390
Y una vez que los datos del perfil del usuario se obtienen del servidor de recursos de Facebook,

178
00:11:50,390 --> 00:11:54,530
entonces mi servidor Express va a crear una cuenta

179
00:11:54,530 --> 00:11:59,383
para este usuario en particular que los ha registrado con su cuenta de Facebook.

180
00:11:59,383 --> 00:12:05,995
Y luego, posteriormente, proporcione un token web JSON al usuario,

181
00:12:05,995 --> 00:12:09,190
que el usuario puede usar para acceder a

182
00:12:09,190 --> 00:12:12,530
los recursos almacenados en el servidor Express.

183
00:12:12,530 --> 00:12:15,040
Así que, de nuevo, para resumir esto,

184
00:12:15,040 --> 00:12:20,387
tengo un diagrama aquí para explicarle esto con un poco más de detalle.

185
00:12:20,387 --> 00:12:22,000
Además de esto,

186
00:12:22,000 --> 00:12:24,225
también hay un token de actualización.

187
00:12:24,225 --> 00:12:29,910
Cuando el servidor de Facebook OAuth 2 emite un token de acceso,

188
00:12:29,910 --> 00:12:31,875
el token de acceso tiene una duración limitada.

189
00:12:31,875 --> 00:12:34,750
Después de eso, el token de acceso se volverá inválido.

190
00:12:34,750 --> 00:12:39,203
Por lo tanto, el token de acceso debe mantenerse confidencial.

191
00:12:39,203 --> 00:12:43,285
Así que todo este intercambio de tokens entre los diferentes sitios

192
00:12:43,285 --> 00:12:48,040
se realizará en un asunto cifrado usando el protocolo HTTPS.

193
00:12:48,040 --> 00:12:50,980
Así que asegúrese de que cuando envíe su token de acceso desde

194
00:12:50,980 --> 00:12:56,838
su aplicación front-end de usuario al servidor Express,

195
00:12:56,838 --> 00:13:02,146
solo enviará el token de acceso a través de HTTPS, no HTTP.

196
00:13:02,146 --> 00:13:04,930
Esto es muy importante porque no

197
00:13:04,930 --> 00:13:08,110
desea que su token de acceso se revele a nadie porque cualquiera

198
00:13:08,110 --> 00:13:10,960
que pueda obtener uno de su token de acceso puede pretender ser

199
00:13:10,960 --> 00:13:15,130
su aplicación cliente y luego obtener acceso a su perfil de usuario.

200
00:13:15,130 --> 00:13:16,820
Así que eso es muy importante.

201
00:13:16,820 --> 00:13:20,005
Ahora, dado que el token de acceso tiene una duración limitada,

202
00:13:20,005 --> 00:13:22,495
también hay un token de actualización correspondiente,

203
00:13:22,495 --> 00:13:27,550
que se puede usar para actualizar un token de acceso caducado.

204
00:13:27,550 --> 00:13:30,790
Ahora, en el tipo de flujo que vamos a

205
00:13:30,790 --> 00:13:35,500
usar con nuestra aplicación en el ejercicio,

206
00:13:35,500 --> 00:13:38,285
no podremos usar el token de actualización.

207
00:13:38,285 --> 00:13:41,620
Cada vez que el usuario quiera autorizar

208
00:13:41,620 --> 00:13:46,070
al servidor Express para ir a buscar la información del perfil de Facebook,

209
00:13:46,070 --> 00:13:48,470
el usuario tendrá que proporcionar explícitamente

210
00:13:48,470 --> 00:13:52,736
un nuevo token de acceso que se obtiene de Facebook.

211
00:13:52,736 --> 00:13:56,665
La única parte que acabo de mencionar brevemente,

212
00:13:56,665 --> 00:13:58,221
pero no he elaborado,

213
00:13:58,221 --> 00:14:01,920
es cómo funciona la aplicación cliente, el servidor Express,

214
00:14:01,920 --> 00:14:07,260
las básculas, ¿cómo se registra en el proveedor de servicios OAuth 2?

215
00:14:07,260 --> 00:14:11,440
Ahora, aquí es donde muchos de los proveedores de servicios de OAuth 2

216
00:14:11,440 --> 00:14:16,705
proporcionan una forma de registrar una aplicación en su sitio.

217
00:14:16,705 --> 00:14:18,050
Por lo tanto, una aplicación cliente,

218
00:14:18,050 --> 00:14:20,485
los servidores Express en nuestro ejemplo,

219
00:14:20,485 --> 00:14:25,875
se registrará como una aplicación cliente en el proveedor de servicios OAuth.

220
00:14:25,875 --> 00:14:27,460
Así que como verá en el ejercicio,

221
00:14:27,460 --> 00:14:31,795
el primer paso que haremos es iniciar sesión en Facebook con

222
00:14:31,795 --> 00:14:37,795
nuestra cuenta y luego crear una aplicación en el sitio de Facebook.

223
00:14:37,795 --> 00:14:44,020
Al hacerlo, Facebook le emitirá un ID de aplicación cliente y un secreto de cliente.

224
00:14:44,020 --> 00:14:47,830
Este procedimiento se aplica a muchos otros proveedores de servicios OAuth porque

225
00:14:47,830 --> 00:14:51,960
este es el flujo general del que habla el protocolo OAuth 2.

226
00:14:51,960 --> 00:14:57,130
Por lo tanto, el ID de la aplicación cliente y el secreto del cliente son útiles para que podamos

227
00:14:57,130 --> 00:15:02,320
probar nuestra identidad

228
00:15:02,320 --> 00:15:08,960
al servidor OAuth cuando estamos pasando un token de acceso que obtenemos del usuario.

229
00:15:08,960 --> 00:15:11,500
Ahora, también hay una URL de redirección que necesita

230
00:15:11,500 --> 00:15:14,650
registrar cuando está registrando la aplicación cliente,

231
00:15:14,650 --> 00:15:18,520
y me verá realizando eso en los pasos que registro

232
00:15:18,520 --> 00:15:23,410
la aplicación en el sitio de Facebook.

233
00:15:23,410 --> 00:15:26,380
Ahora, para resumir el flujo de información del

234
00:15:26,380 --> 00:15:29,765
que acabamos de hablar brevemente en el caso anterior,

235
00:15:29,765 --> 00:15:31,855
permítanme comenzar en este punto.

236
00:15:31,855 --> 00:15:35,295
El primer punto a tener en cuenta es el propietario del recurso.

237
00:15:35,295 --> 00:15:39,355
Así que el propietario del recurso aquí

238
00:15:39,355 --> 00:15:43,660
es el usuario que va a usar su cuenta de redes sociales.

239
00:15:43,660 --> 00:15:45,625
Facebook, en este ejemplo,

240
00:15:45,625 --> 00:15:49,490
tiene la autenticación para el usuario.

241
00:15:49,490 --> 00:15:54,515
Por lo tanto, el propietario del recurso es el que tiene el perfil sobre el recurso.

242
00:15:54,515 --> 00:15:57,760
Y esta información de perfil para cada cuenta de Facebook,

243
00:15:57,760 --> 00:16:00,535
se almacenaron en el servidor de Facebook.

244
00:16:00,535 --> 00:16:05,067
Y así el servidor de Facebook proporciona el servidor de recursos aquí.

245
00:16:05,067 --> 00:16:08,410
Así que ese es el proveedor de servicios OAuth que ve en

246
00:16:08,410 --> 00:16:12,691
el lado derecho de esta imagen aquí.

247
00:16:12,691 --> 00:16:17,320
Así que imagina el servidor de Facebook en el lado derecho, esa aplicación cliente,

248
00:16:17,320 --> 00:16:18,928
que tiene el resto del servidor API,

249
00:16:18,928 --> 00:16:20,477
el servidor Express que hemos implementado,

250
00:16:20,477 --> 00:16:22,270
es una aplicación cliente en este caso,

251
00:16:22,270 --> 00:16:24,700
y el propietario del recurso es el usuario.

252
00:16:24,700 --> 00:16:28,780
URL de usuario front-end, que va a

253
00:16:28,780 --> 00:16:33,510
autorizar a ir a Facebook para verificar la credencial de ese usuario.

254
00:16:33,510 --> 00:16:39,245
Así que cuando desee acceder a la información del lado del cliente,

255
00:16:39,245 --> 00:16:44,355
primero tendrá que ir y

256
00:16:44,355 --> 00:16:47,730
autorizar esta aplicación cliente para poder

257
00:16:47,730 --> 00:16:51,673
obtener acceso a la información de su perfil.

258
00:16:51,673 --> 00:16:52,855
Por lo tanto, la aplicación cliente,

259
00:16:52,855 --> 00:16:55,120
si está actuando como una aplicación web,

260
00:16:55,120 --> 00:17:00,095
proporcionará un botón apropiado allí diciendo iniciar sesión usando Facebook.

261
00:17:00,095 --> 00:17:01,740
Y así, cuando haces clic en el botón,

262
00:17:01,740 --> 00:17:04,780
esencialmente, se inicia el primer paso. Se

263
00:17:04,780 --> 00:17:07,375
inicia la solicitud de autorización de usuario.

264
00:17:07,375 --> 00:17:09,270
Así que su aplicación cliente,

265
00:17:09,270 --> 00:17:10,910
a través del agente de

266
00:17:10,910 --> 00:17:17,409
usuario, el agente de usuario es básicamente la aplicación cliente, la aplicación front-end.

267
00:17:17,409 --> 00:17:22,725
Podría ser la aplicación Angular que hemos desarrollado o esa aplicación móvil,

268
00:17:22,725 --> 00:17:25,950
ya sea Ionic o si se trata de

269
00:17:25,950 --> 00:17:30,120
una aplicación NativeScript que hemos desarrollado en los cursos anteriores en

270
00:17:30,120 --> 00:17:37,807
la especialización o incluso una aplicación nativa como una aplicación iOS o una aplicación Android.

271
00:17:37,807 --> 00:17:39,060
Todos estos actúan como agente de usuario.

272
00:17:39,060 --> 00:17:42,360
Por lo tanto, el agente de usuario,

273
00:17:42,360 --> 00:17:45,420
utilizan un proceso de solicitud de autorización a través

274
00:17:45,420 --> 00:17:48,360
del agente de usuario al servidor de autorización,

275
00:17:48,360 --> 00:17:50,500
que es el servidor de Facebook.

276
00:17:50,500 --> 00:17:52,235
Ahora, cuando eso pase,

277
00:17:52,235 --> 00:17:55,796
entonces el propietario del recurso o el usuario,

278
00:17:55,796 --> 00:18:01,065
que está tratando de dar acceso a su perfil a esta aplicación cliente,

279
00:18:01,065 --> 00:18:03,690
tendrá que autorizar a Facebook para

280
00:18:03,690 --> 00:18:06,600
poder compartir esta información con la aplicación cliente.

281
00:18:06,600 --> 00:18:11,250
En el enfoque de concesión de flujo implícito que estamos utilizando en

282
00:18:11,250 --> 00:18:16,025
nuestro ejemplo aquí y también en el ejercicio que sigue,

283
00:18:16,025 --> 00:18:18,390
el enfoque de concesión de flujo implícito es

284
00:18:18,390 --> 00:18:22,875
el enfoque más adecuado cuando está implementando una aplicación web usando

285
00:18:22,875 --> 00:18:26,563
un marco como Angular o la aplicación móvil híbrida

286
00:18:26,563 --> 00:18:30,925
con Ionic o un NativeScript o incluso una aplicación nativa.

287
00:18:30,925 --> 00:18:34,320
El enfoque de concesión de flujo implícito es una forma mucho más simple de

288
00:18:34,320 --> 00:18:39,170
operar el OAuth 2 para este tipo de aplicaciones.

289
00:18:39,170 --> 00:18:43,930
Entonces, el propietario del recurso hace clic en el botón de inicio de sesión,

290
00:18:43,930 --> 00:18:49,710
luego el servidor de autorización le preguntará al propietario del recurso con la información que dice:

291
00:18:49,710 --> 00:18:54,330
«Esta aplicación cliente quiere acceder a la información de su perfil.

292
00:18:54,330 --> 00:18:55,725
¿ Lo autoriza usted?

293
00:18:55,725 --> 00:18:58,965
Así que esto aparecerá por Facebook,

294
00:18:58,965 --> 00:19:01,860
y luego hará clic en un botón que dice: «

295
00:19:01,860 --> 00:19:05,278
Sí, autorizo a esta aplicación cliente a acceder en mi nombre».

296
00:19:05,278 --> 00:19:06,645
Entonces, en ese punto,

297
00:19:06,645 --> 00:19:08,680
el servidor de autorización en Facebook,

298
00:19:08,680 --> 00:19:11,190
el servidor de autorización de OAuth 2 en Facebook,

299
00:19:11,190 --> 00:19:13,380
generará un token de acceso.

300
00:19:13,380 --> 00:19:15,105
Para generar este token de acceso,

301
00:19:15,105 --> 00:19:20,405
hará uso del ID de cliente para esta aplicación cliente,

302
00:19:20,405 --> 00:19:22,535
la aplicación de servidor Express que registramos.

303
00:19:22,535 --> 00:19:28,165
Por lo tanto, el ID de cliente debe formar parte del agente de usuario que utiliza este usuario.

304
00:19:28,165 --> 00:19:33,093
Por lo tanto, este ID de cliente se incrusta en

305
00:19:33,093 --> 00:19:38,585
la aplicación Angular, la aplicación Ionic o NativeScript o incluso en una aplicación iOS o Android.

306
00:19:38,585 --> 00:19:40,560
Por lo tanto, el

307
00:19:40,560 --> 00:19:43,410
agente de usuario usará el ID del cliente para convertir el servidor de autorización diciendo:

308
00:19:43,410 --> 00:19:48,108
«Esta aplicación cliente quiere acceso a mi perfil,

309
00:19:48,108 --> 00:19:52,704
y estoy dispuesto a autorizarle a permitir el acceso al perfil».

310
00:19:52,704 --> 00:19:53,760
Por lo tanto, en ese punto,

311
00:19:53,760 --> 00:19:59,290
el servidor de autorización enviará un token de acceso al agente de usuario en este caso.

312
00:19:59,290 --> 00:20:02,670
Por lo tanto, recuerde, este token de acceso entra en el agente de usuario,

313
00:20:02,670 --> 00:20:09,180
que es la aplicación móvil o su aplicación angular que implementamos.

314
00:20:09,180 --> 00:20:12,870
A continuación, este agente de usuario tomará este token de acceso y

315
00:20:12,870 --> 00:20:18,479
luego pasará este token de acceso a esa aplicación cliente.

316
00:20:18,479 --> 00:20:20,310
Por lo tanto, el OAuth para iniciar sesión,

317
00:20:20,310 --> 00:20:23,305
pero el token de acceso se pasará a la aplicación cliente,

318
00:20:23,305 --> 00:20:25,200
el servidor Express en este caso,

319
00:20:25,200 --> 00:20:32,340
en una ruta particular en el enrutador del usuario,

320
00:20:32,340 --> 00:20:37,465
la ruta de autenticación en el sitio de la aplicación cliente.

321
00:20:37,465 --> 00:20:41,000
Ahora, anteriormente, vimos el uso de la autenticación local,

322
00:20:41,000 --> 00:20:45,985
donde enviamos una solicitud para recortar el usuario barra de inicio de sesión.

323
00:20:45,985 --> 00:20:48,250
Ahora, para que esto funcione en nuestra aplicación,

324
00:20:48,250 --> 00:20:50,580
configuraremos otra en usuarios de barra

325
00:20:50,580 --> 00:20:54,095
diagonal, barra de Facebook, token de barra, etc.

326
00:20:54,095 --> 00:21:02,500
Entonces, otra URL en la que proporcionamos este token de acceso al servidor Express.

327
00:21:02,500 --> 00:21:06,280
Ahora, cuando el servidor Express obtiene este token de acceso,

328
00:21:06,280 --> 00:21:09,630
el servidor Express tomará este token de acceso,

329
00:21:09,630 --> 00:21:14,240
y luego junto con su ID de cliente y el secreto del cliente,

330
00:21:14,240 --> 00:21:20,200
enviará esta información al servidor de autorización.

331
00:21:20,200 --> 00:21:25,140
Y el servidor de autorización permitirá que su aplicación cliente

332
00:21:25,140 --> 00:21:30,565
acceda al servidor de recursos para obtener la información del perfil.

333
00:21:30,565 --> 00:21:35,060
Y así la información del perfil se enviará de vuelta en el paso número seis, de

334
00:21:35,060 --> 00:21:37,890
vuelta a la aplicación cliente en este caso.

335
00:21:37,890 --> 00:21:42,015
Por lo tanto, cuando la aplicación cliente obtiene la información de perfil para

336
00:21:42,015 --> 00:21:46,380
el usuario, la aplicación cliente creará una nueva cuenta para

337
00:21:46,380 --> 00:21:51,785
el usuario en cada sitio si no existe una cuenta.

338
00:21:51,785 --> 00:21:56,090
Si ese usuario ya ha iniciado sesión con su ID de Facebook,

339
00:21:56,090 --> 00:22:00,045
ya existirá una cuenta para que la aplicación cliente y el servidor Rest API

340
00:22:00,045 --> 00:22:05,485
simplemente comprueben que esta cuenta de usuario ya existe.

341
00:22:05,485 --> 00:22:06,865
Y, en ese momento,

342
00:22:06,865 --> 00:22:12,550
el usuario se autentica en la funcionalidad de inicio de sesión de terceros

343
00:22:12,550 --> 00:22:18,321
proporcionada por el servicio de autenticación OAuth 2 de Facebook.

344
00:22:18,321 --> 00:22:23,275
En ese momento, la aplicación cliente generará un JSON Web Token,

345
00:22:23,275 --> 00:22:26,010
en el ejemplo que vamos a implementar y hacer ejercicio,

346
00:22:26,010 --> 00:22:33,040
y luego pasar este JSON Web Token de vuelta al agente de usuario o la aplicación front-end,

347
00:22:33,040 --> 00:22:35,845
o la aplicación Angular, o la aplicación Ionic,

348
00:22:35,845 --> 00:22:38,590
o la aplicación NativeScript.

349
00:22:38,590 --> 00:22:45,160
A continuación, el usuario utilizará el token web JSON

350
00:22:45,160 --> 00:22:48,790
para autenticarse cada vez que quiera

351
00:22:48,790 --> 00:22:53,145
acceder a cualquier recurso almacenado en el servidor Express.

352
00:22:53,145 --> 00:22:55,505
Por lo tanto, una vez que obtiene el token web JSON

353
00:22:55,505 --> 00:23:00,975
, todas las operaciones posteriores, ya ha visto cómo hacerlo con JSON Web Token.

354
00:23:00,975 --> 00:23:03,565
Por lo tanto, una vez que obtiene el token web JSON

355
00:23:03,565 --> 00:23:05,070
, su trabajo está hecho,

356
00:23:05,070 --> 00:23:10,150
y luego puede continuar con la operación normal a partir de ese punto.

357
00:23:10,150 --> 00:23:12,940
Ahora, cuando el Token web JSON expira,

358
00:23:12,940 --> 00:23:17,618
entonces debe pasar por todo el proceso de volver a autenticarse y,

359
00:23:17,618 --> 00:23:22,990
posteriormente, permitir que los usuarios accedan a la información en su sitio.

360
00:23:22,990 --> 00:23:29,710
Por lo tanto, con esta rápida comprensión de cómo funcionan las operaciones de OAuth 2

361
00:23:29,710 --> 00:23:33,385
, de nuevo, como puede ver, hay muchos detalles aquí.

362
00:23:33,385 --> 00:23:38,950
Pero, afortunadamente, no tenemos que lidiar con todos estos detalles porque vamos a

363
00:23:38,950 --> 00:23:46,285
usar un módulo de nodo que se ocupa de muchos de estos detalles en nuestro nombre.

364
00:23:46,285 --> 00:23:52,195
Como ya hemos configurado nuestro servidor Express para usar Passport,

365
00:23:52,195 --> 00:24:00,980
ahora podemos usar otro código de módulo de nodo como módulo Passport-Facebook-Token.

366
00:24:00,980 --> 00:24:04,595
El módulo Passport-Facebook-Token esencialmente implementa

367
00:24:04,595 --> 00:24:08,580
el enfoque implícito de concesión del que hablé antes.

368
00:24:08,580 --> 00:24:11,320
Y luego puede inicializar

369
00:24:11,320 --> 00:24:18,160
una nueva estrategia en su estrategia de Passport, dentro de su aplicación.

370
00:24:18,160 --> 00:24:22,720
Y para que el módulo Passport-Facebook-Token le permita configurar

371
00:24:22,720 --> 00:24:31,090
una nueva estrategia de autenticación de Passport para usar la API OAuth 2 basada en Facebook.

372
00:24:31,090 --> 00:24:36,085
Y así, para hacer uso de este módulo,

373
00:24:36,085 --> 00:24:41,615
instale esto diciendo pasado npm install passport- facebook-token,

374
00:24:41,615 --> 00:24:44,980
menos menos guardar, y luego una vez que lo instale,

375
00:24:44,980 --> 00:24:51,010
entonces configurará una estrategia de Facebook dentro de su aplicación, y, a partir de entonces,

376
00:24:51,010 --> 00:24:57,810
hará uso de esto para configurar la estrategia para que su Passport

377
00:24:57,810 --> 00:25:04,990
haga uso de si estamos haciendo uso de la autenticación basada en OAuth 2 para nuestra aplicación.

378
00:25:04,990 --> 00:25:09,270
Con esta rápida comprensión de OAuth 2,

379
00:25:09,270 --> 00:25:11,770
pasemos al ejercicio,

380
00:25:11,770 --> 00:25:16,630
donde configuraremos nuestro servidor Express para hacer uso de

381
00:25:16,630 --> 00:25:20,920
este enfoque de concesión implícita para permitirnos

382
00:25:20,920 --> 00:25:25,450
verificar nuestra identidad al servidor Express y, a

383
00:25:25,450 --> 00:25:29,745
partir de entonces, obtener acceso a los recursos, los platos,

384
00:25:29,745 --> 00:25:38,180
las promociones y la información de los líderes que se almacena en nuestro servidor Express.