1
00:00:03,950 --> 00:00:06,540
En las lecciones anteriores,

2
00:00:06,540 --> 00:00:10,260
hemos visto varias estrategias para la autenticación de usuarios.

3
00:00:10,260 --> 00:00:12,555
Empezamos con la autenticación básica,

4
00:00:12,555 --> 00:00:16,500
y luego pasamos a las cookies y las sesiones express

5
00:00:16,500 --> 00:00:20,805
como una forma de autenticar y rastrear a los usuarios.

6
00:00:20,805 --> 00:00:24,445
En esta lección veremos Passport,

7
00:00:24,445 --> 00:00:29,450
un módulo de nodo que hace que la autenticación sea bastante fácil

8
00:00:29,450 --> 00:00:34,880
, discreta y sencilla de configurar en su aplicación.

9
00:00:34,880 --> 00:00:39,125
Passport no es más que un middleware de autenticación que admite

10
00:00:39,125 --> 00:00:43,330
varias estrategias que se pueden utilizar para la autenticación de usuarios,

11
00:00:43,330 --> 00:00:47,505
incluyendo una estrategia local como el uso de nombre de usuario y contraseña,

12
00:00:47,505 --> 00:00:54,530
o incluso la autenticación de terceros o el uso de OAuth u OAuth 2.0,

13
00:00:54,530 --> 00:00:57,165
como el uso de Facebook, Twitter,

14
00:00:57,165 --> 00:01:00,515
o Google+, y así sucesivamente.

15
00:01:00,515 --> 00:01:03,600
Vamos a ver algunos detalles sobre Passport,

16
00:01:03,600 --> 00:01:06,995
la autenticación local admitida Passport.

17
00:01:06,995 --> 00:01:10,520
Y en el ejercicio que sigue,

18
00:01:10,520 --> 00:01:13,970
vamos a actualizar nuestra aplicación para hacer uso de los

19
00:01:13,970 --> 00:01:19,025
módulos Passport y Passport-Local Node para habilitar.

20
00:01:19,025 --> 00:01:23,700
autenticación local mediante nombre de usuario y contraseña.

21
00:01:23,920 --> 00:01:27,670
Entonces, como dije un poco antes,

22
00:01:27,670 --> 00:01:33,185
Passport es un middleware de autenticación muy útil para aplicaciones Node.js.

23
00:01:33,185 --> 00:01:36,675
Hace que sea más sencillo implementar la autenticación.

24
00:01:36,675 --> 00:01:39,274
Como hemos visto en los ejercicios anteriores, la

25
00:01:39,274 --> 00:01:45,215
autenticación implica una gran cantidad de código repetitivo y tareas repetitivas manejando errores

26
00:01:45,215 --> 00:01:48,440
y diseñando formas de verificar

27
00:01:48,440 --> 00:01:52,580
la autenticación del usuario y luego autenticar al usuario, etc.

28
00:01:52,580 --> 00:01:56,090
Todo esto se simplifica dentro de Passport utilizando

29
00:01:56,090 --> 00:02:00,040
varias estrategias que se pueden utilizar para autenticar usuarios.

30
00:02:00,040 --> 00:02:04,220
Puede utilizar una estrategia local, por ejemplo, que se basa en

31
00:02:04,220 --> 00:02:09,440
registrar usuarios en su sistema utilizando un nombre de usuario y una contraseña,

32
00:02:09,440 --> 00:02:14,030
y luego autenticarlos utilizando el nombre de usuario y la contraseña.

33
00:02:14,030 --> 00:02:18,965
Passport también admite la autenticación basada en OpenID

34
00:02:18,965 --> 00:02:22,805
o la autenticación basada en OAuth u OAuth 2.0,

35
00:02:22,805 --> 00:02:27,135
como es compatible con autenticadores de terceros como Facebook

36
00:02:27,135 --> 00:02:29,535
, Twitter, Google+, etc.

37
00:02:29,535 --> 00:02:32,465
También podemos usar lo que se llama como

38
00:02:32,465 --> 00:02:37,880
tokens web JSON como otra forma de autenticación llamada autenticación basada en tokens.

39
00:02:37,880 --> 00:02:42,485
Vamos a ver la autenticación basada en tokens en la parte posterior de esta lección.

40
00:02:42,485 --> 00:02:46,465
Además, Passport admite sesiones.

41
00:02:46,465 --> 00:02:51,785
Como hemos visto en el ejercicio anterior y en la lección anterior, las

42
00:02:51,785 --> 00:02:55,640
sesiones express son una forma fácil de rastrear a los usuarios en

43
00:02:55,640 --> 00:03:01,130
el lado del servidor y poder atender las solicitudes entrantes de los clientes.

44
00:03:01,130 --> 00:03:03,330
Para hacer uso de Passport, por supuesto,

45
00:03:03,330 --> 00:03:05,515
instalaremos el módulo Passport.

46
00:03:05,515 --> 00:03:08,175
También, en el ejercicio siguiente,

47
00:03:08,175 --> 00:03:11,195
instalaremos el módulo Passport-Local para

48
00:03:11,195 --> 00:03:15,060
proporcionar la estrategia local para la autenticación de usuarios.

49
00:03:15,060 --> 00:03:19,885
El uso de Passport dentro de nuestra solicitud es bastante sencillo.

50
00:03:19,885 --> 00:03:23,500
En las rutas en las que queremos realizar la autenticación,

51
00:03:23,500 --> 00:03:27,110
solo especificamos la autenticación de pasaporte y luego especificamos

52
00:03:27,110 --> 00:03:33,320
la estrategia de autenticación específica que queremos utilizar para la autenticación del usuario.

53
00:03:33,320 --> 00:03:34,810
A modo de ejemplo,

54
00:03:34,810 --> 00:03:36,590
verá que estamos aplicando

55
00:03:36,590 --> 00:03:41,950
una autenticación local diciendo que el pasaporte autentificar y local.

56
00:03:41,950 --> 00:03:46,530
Por lo tanto, utiliza la estrategia local para autenticar a los usuarios.

57
00:03:46,530 --> 00:03:49,725
Si la autenticación es exitosa,

58
00:03:49,725 --> 00:03:53,870
entonces el middleware pasa al siguiente paso,

59
00:03:53,870 --> 00:03:57,435
donde podemos procesar aún más la solicitud entrante.

60
00:03:57,435 --> 00:04:03,240
Por lo tanto, una vez completada la autenticación exitosa del pasaporte de usuario,

61
00:04:03,240 --> 00:04:09,300
Passport agrega una propiedad de usuario al mensaje de solicitud.

62
00:04:09,300 --> 00:04:15,110
Así que req.user está disponible para nosotros con la información del usuario allí,

63
00:04:15,110 --> 00:04:17,960
que posteriormente podemos usar dentro de

64
00:04:17,960 --> 00:04:23,850
nuestra aplicación expresa para manejar la solicitud procedente de usuarios específicos.

65
00:04:23,850 --> 00:04:30,110
Por lo tanto, esto nos ayuda fácilmente a identificar qué cliente envió la solicitud a

66
00:04:30,110 --> 00:04:32,840
nuestra aplicación y,

67
00:04:32,840 --> 00:04:37,525
en consecuencia, atender la solicitud según la identidad del usuario.

68
00:04:37,525 --> 00:04:40,140
Junto con Passport, instalaremos

69
00:04:40,140 --> 00:04:45,225
otro módulo relacionado con Passport-Local.

70
00:04:45,225 --> 00:04:49,490
Passport-Local admite una estrategia llamada como

71
00:04:49,490 --> 00:04:52,190
estrategia local para autenticar usuarios

72
00:04:52,190 --> 00:04:55,135
con la combinación estándar de contraseña de nombre de usuario.

73
00:04:55,135 --> 00:04:58,230
Así que configuramos el esquema de usuario,

74
00:04:58,230 --> 00:04:59,540
como lo hicimos antes,

75
00:04:59,540 --> 00:05:05,030
y luego usamos el esquema de usuario o modelo para rastrear el nombre de usuario y la

76
00:05:05,030 --> 00:05:11,240
contraseña y luego Passport-Local depende de eso para verificar el nombre de usuario y la contraseña.

77
00:05:11,240 --> 00:05:12,815
Por lo tanto, para instalarlo de nuevo,

78
00:05:12,815 --> 00:05:13,985
siendo un módulo Node,

79
00:05:13,985 --> 00:05:19,490
lo instalamos utilizando el procedimiento estándar para instalar el módulo Passport-Local Node.

80
00:05:19,490 --> 00:05:23,075
Una vez instalado el módulo Passport-Local Node,

81
00:05:23,075 --> 00:05:30,750
entonces necesitamos especificar la estrategia local y cómo se usa realmente dentro de Passport.

82
00:05:30,750 --> 00:05:33,465
Entonces, para especificar una estrategia local, diremos;

83
00:05:33,465 --> 00:05:39,290
passport.use, y así esto nos permitirá especificar la estrategia local a usar.

84
00:05:39,290 --> 00:05:42,705
Por lo tanto, habiendo instalado el Passport-Local,

85
00:05:42,705 --> 00:05:46,900
declararemos una nueva estrategia local y luego proporcionaremos

86
00:05:46,900 --> 00:05:53,725
la función de verificación correspondiente que se utiliza para verificar al usuario.

87
00:05:53,725 --> 00:05:59,585
Si está utilizando un MongoDB como la tienda de back-end, entonces,

88
00:05:59,585 --> 00:06:02,660
para ayudarnos con la estrategia Passport-Local,

89
00:06:02,660 --> 00:06:06,045
hay otro módulo llamado como Passport-Local Mangoose.

90
00:06:06,045 --> 00:06:10,150
El módulo Passport-Local Mangoose proporciona

91
00:06:10,150 --> 00:06:15,290
un plugin de Mongoose que simplificará el nombre de usuario y contraseña de inicio de sesión.

92
00:06:15,290 --> 00:06:19,250
Al instalar el plugin Passport-Local Mangoose y

93
00:06:19,250 --> 00:06:23,330
luego usarlo cuando definimos el esquema de usuario y el modelo,

94
00:06:23,330 --> 00:06:29,605
y por lo tanto utilizando el soporte del módulo Passport-Local Mangoose,

95
00:06:29,605 --> 00:06:33,995
este plugin de mangosta añade el nombre de usuario y

96
00:06:33,995 --> 00:06:40,080
una forma cifrada de almacenar la contraseña dentro de nuestro usuario modelo.

97
00:06:40,080 --> 00:06:43,205
El cifrado se realiza mediante el uso de hash

98
00:06:43,205 --> 00:06:47,060
en la contraseña que usamos para registrar usuarios,

99
00:06:47,060 --> 00:06:50,595
y el hash en sí utiliza un campo de sal.

100
00:06:50,595 --> 00:06:54,140
Entonces, si sabe algo sobre criptografía, en criptografía,

101
00:06:54,140 --> 00:06:57,620
la sal es una cadena aleatoria que se usa para realizar

102
00:06:57,620 --> 00:07:02,135
la operación de hash en la contraseña para almacenar.

103
00:07:02,135 --> 00:07:07,590
Entonces, la contraseña hash en sí misma se almacena en nuestra base de datos MongoDB.

104
00:07:07,590 --> 00:07:09,815
La contraseña real no se almacena.

105
00:07:09,815 --> 00:07:14,420
Por lo tanto, cuando el usuario intenta autenticarse usando el nombre de usuario y la contraseña,

106
00:07:14,420 --> 00:07:16,820
la contraseña será codificada de nuevo y luego comparada con

107
00:07:16,820 --> 00:07:20,490
las contraseñas hash almacenadas en nuestra base de datos y

108
00:07:20,490 --> 00:07:28,040
todo esto es proporcionado por el plugin Mangoose, el Passport-Local Mangoose.

109
00:07:28,040 --> 00:07:32,690
Además, el Passport-Local Mangoose también agrega métodos adicionales que

110
00:07:32,690 --> 00:07:37,535
son muy útiles para configurar la estrategia Passport-Local.

111
00:07:37,535 --> 00:07:43,095
Así que dentro de nuestra aplicación cuando definamos el esquema de usuario y el modelo,

112
00:07:43,095 --> 00:07:46,030
vamos a importar el Passport-Local Mangoose y luego añadir

113
00:07:46,030 --> 00:07:49,495
como el plugin para el esquema de usuario.

114
00:07:49,495 --> 00:07:53,000
Este módulo Passport-Local Mangoose automáticamente

115
00:07:53,000 --> 00:07:56,240
como dije agrega el campo de nombre de usuario y también

116
00:07:56,240 --> 00:08:03,690
un campo de almacenamiento de contraseñas hash usando un valor de sal que usa para hacer el hash,

117
00:08:03,690 --> 00:08:08,240
y también proporciona métodos adicionales que nos permiten

118
00:08:08,240 --> 00:08:13,010
configurar nuestra estrategia Passport-Local.

119
00:08:13,010 --> 00:08:16,945
Si estamos utilizando el módulo Passport-Local Mangoose,

120
00:08:16,945 --> 00:08:19,185
entonces la estrategia local,

121
00:08:19,185 --> 00:08:23,990
el plugin Passport-Local Mangoose soporta en

122
00:08:23,990 --> 00:08:30,020
el modelo de usuario un método de autenticación que hará automáticamente la autenticación.

123
00:08:30,020 --> 00:08:35,195
En la diapositiva anterior les había mostrado cómo implementaríamos la estrategia local.

124
00:08:35,195 --> 00:08:39,690
Ahora esto lo proporciona automáticamente Passport-Local Mangoose

125
00:08:39,690 --> 00:08:44,285
simplemente diciendo nuevo localstrategy user.authenticate.

126
00:08:44,285 --> 00:08:50,730
Entonces no necesitamos escribir explícitamente el código de autenticación para la estrategia local.

127
00:08:50,730 --> 00:08:55,445
Además, si está utilizando sesiones que son compatibles con Passport,

128
00:08:55,445 --> 00:08:58,555
entonces, para las sesiones de soporte,

129
00:08:58,555 --> 00:09:02,630
la información del usuario debe serializarse para

130
00:09:02,630 --> 00:09:06,840
almacenarse con la información de sesión en el lado del servidor y, a continuación,

131
00:09:06,840 --> 00:09:08,690
cuando llegue la solicitud,

132
00:09:08,690 --> 00:09:10,140
desde el ID de sesión,

133
00:09:10,140 --> 00:09:13,940
la información del usuario necesita ser deserializado para extraer

134
00:09:13,940 --> 00:09:20,160
la información del usuario de nuestra información de sesión que se almacena en el lado del servidor.

135
00:09:20,160 --> 00:09:22,145
Ahora esta

136
00:09:22,145 --> 00:09:27,440
operación de serialización y deserialización ya está soportada por Passport-Local Mangoose a través

137
00:09:27,440 --> 00:09:29,990
del usuario serialize y

138
00:09:29,990 --> 00:09:36,480
los métodos de usuario deserialize que están disponibles en el plugin Passport-Local Mangoose.

139
00:09:36,480 --> 00:09:38,095
Así que después de haber visto esto,

140
00:09:38,095 --> 00:09:42,680
ahora veremos en el ejercicio lo fácil que es configurar la

141
00:09:42,680 --> 00:09:48,120
estrategia local para autenticar usuarios usando los

142
00:09:48,120 --> 00:09:54,490
módulos Passport, Passport-Local y Passport-Local Mangoose Node.