En las lecciones anteriores,
hemos visto varias estrategias para la autenticación de usuarios.
Empezamos con la autenticación básica,
y luego pasamos a las cookies y las sesiones express
como una forma de autenticar y rastrear a los usuarios.
En esta lección veremos Passport,
un módulo de nodo que hace que la autenticación sea bastante fácil
, discreta y sencilla de configurar en su aplicación.
Passport no es más que un middleware de autenticación que admite
varias estrategias que se pueden utilizar para la autenticación de usuarios,
incluyendo una estrategia local como el uso de nombre de usuario y contraseña,
o incluso la autenticación de terceros o el uso de OAuth u OAuth 2.0,
como el uso de Facebook, Twitter,
o Google+, y así sucesivamente.
Vamos a ver algunos detalles sobre Passport,
la autenticación local admitida Passport.
Y en el ejercicio que sigue,
vamos a actualizar nuestra aplicación para hacer uso de los
módulos Passport y Passport-Local Node para habilitar.
autenticación local mediante nombre de usuario y contraseña.
Entonces, como dije un poco antes,
Passport es un middleware de autenticación muy útil para aplicaciones Node.js.
Hace que sea más sencillo implementar la autenticación.
Como hemos visto en los ejercicios anteriores, la
autenticación implica una gran cantidad de código repetitivo y tareas repetitivas manejando errores
y diseñando formas de verificar
la autenticación del usuario y luego autenticar al usuario, etc.
Todo esto se simplifica dentro de Passport utilizando
varias estrategias que se pueden utilizar para autenticar usuarios.
Puede utilizar una estrategia local, por ejemplo, que se basa en
registrar usuarios en su sistema utilizando un nombre de usuario y una contraseña,
y luego autenticarlos utilizando el nombre de usuario y la contraseña.
Passport también admite la autenticación basada en OpenID
o la autenticación basada en OAuth u OAuth 2.0,
como es compatible con autenticadores de terceros como Facebook
, Twitter, Google+, etc.
También podemos usar lo que se llama como
tokens web JSON como otra forma de autenticación llamada autenticación basada en tokens.
Vamos a ver la autenticación basada en tokens en la parte posterior de esta lección.
Además, Passport admite sesiones.
Como hemos visto en el ejercicio anterior y en la lección anterior, las
sesiones express son una forma fácil de rastrear a los usuarios en
el lado del servidor y poder atender las solicitudes entrantes de los clientes.
Para hacer uso de Passport, por supuesto,
instalaremos el módulo Passport.
También, en el ejercicio siguiente,
instalaremos el módulo Passport-Local para
proporcionar la estrategia local para la autenticación de usuarios.
El uso de Passport dentro de nuestra solicitud es bastante sencillo.
En las rutas en las que queremos realizar la autenticación,
solo especificamos la autenticación de pasaporte y luego especificamos
la estrategia de autenticación específica que queremos utilizar para la autenticación del usuario.
A modo de ejemplo,
verá que estamos aplicando
una autenticación local diciendo que el pasaporte autentificar y local.
Por lo tanto, utiliza la estrategia local para autenticar a los usuarios.
Si la autenticación es exitosa,
entonces el middleware pasa al siguiente paso,
donde podemos procesar aún más la solicitud entrante.
Por lo tanto, una vez completada la autenticación exitosa del pasaporte de usuario,
Passport agrega una propiedad de usuario al mensaje de solicitud.
Así que req.user está disponible para nosotros con la información del usuario allí,
que posteriormente podemos usar dentro de
nuestra aplicación expresa para manejar la solicitud procedente de usuarios específicos.
Por lo tanto, esto nos ayuda fácilmente a identificar qué cliente envió la solicitud a
nuestra aplicación y,
en consecuencia, atender la solicitud según la identidad del usuario.
Junto con Passport, instalaremos
otro módulo relacionado con Passport-Local.
Passport-Local admite una estrategia llamada como
estrategia local para autenticar usuarios
con la combinación estándar de contraseña de nombre de usuario.
Así que configuramos el esquema de usuario,
como lo hicimos antes,
y luego usamos el esquema de usuario o modelo para rastrear el nombre de usuario y la
contraseña y luego Passport-Local depende de eso para verificar el nombre de usuario y la contraseña.
Por lo tanto, para instalarlo de nuevo,
siendo un módulo Node,
lo instalamos utilizando el procedimiento estándar para instalar el módulo Passport-Local Node.
Una vez instalado el módulo Passport-Local Node,
entonces necesitamos especificar la estrategia local y cómo se usa realmente dentro de Passport.
Entonces, para especificar una estrategia local, diremos;
passport.use, y así esto nos permitirá especificar la estrategia local a usar.
Por lo tanto, habiendo instalado el Passport-Local,
declararemos una nueva estrategia local y luego proporcionaremos
la función de verificación correspondiente que se utiliza para verificar al usuario.
Si está utilizando un MongoDB como la tienda de back-end, entonces,
para ayudarnos con la estrategia Passport-Local,
hay otro módulo llamado como Passport-Local Mangoose.
El módulo Passport-Local Mangoose proporciona
un plugin de Mongoose que simplificará el nombre de usuario y contraseña de inicio de sesión.
Al instalar el plugin Passport-Local Mangoose y
luego usarlo cuando definimos el esquema de usuario y el modelo,
y por lo tanto utilizando el soporte del módulo Passport-Local Mangoose,
este plugin de mangosta añade el nombre de usuario y
una forma cifrada de almacenar la contraseña dentro de nuestro usuario modelo.
El cifrado se realiza mediante el uso de hash
en la contraseña que usamos para registrar usuarios,
y el hash en sí utiliza un campo de sal.
Entonces, si sabe algo sobre criptografía, en criptografía,
la sal es una cadena aleatoria que se usa para realizar
la operación de hash en la contraseña para almacenar.
Entonces, la contraseña hash en sí misma se almacena en nuestra base de datos MongoDB.
La contraseña real no se almacena.
Por lo tanto, cuando el usuario intenta autenticarse usando el nombre de usuario y la contraseña,
la contraseña será codificada de nuevo y luego comparada con
las contraseñas hash almacenadas en nuestra base de datos y
todo esto es proporcionado por el plugin Mangoose, el Passport-Local Mangoose.
Además, el Passport-Local Mangoose también agrega métodos adicionales que
son muy útiles para configurar la estrategia Passport-Local.
Así que dentro de nuestra aplicación cuando definamos el esquema de usuario y el modelo,
vamos a importar el Passport-Local Mangoose y luego añadir
como el plugin para el esquema de usuario.
Este módulo Passport-Local Mangoose automáticamente
como dije agrega el campo de nombre de usuario y también
un campo de almacenamiento de contraseñas hash usando un valor de sal que usa para hacer el hash,
y también proporciona métodos adicionales que nos permiten
configurar nuestra estrategia Passport-Local.
Si estamos utilizando el módulo Passport-Local Mangoose,
entonces la estrategia local,
el plugin Passport-Local Mangoose soporta en
el modelo de usuario un método de autenticación que hará automáticamente la autenticación.
En la diapositiva anterior les había mostrado cómo implementaríamos la estrategia local.
Ahora esto lo proporciona automáticamente Passport-Local Mangoose
simplemente diciendo nuevo localstrategy user.authenticate.
Entonces no necesitamos escribir explícitamente el código de autenticación para la estrategia local.
Además, si está utilizando sesiones que son compatibles con Passport,
entonces, para las sesiones de soporte,
la información del usuario debe serializarse para
almacenarse con la información de sesión en el lado del servidor y, a continuación,
cuando llegue la solicitud,
desde el ID de sesión,
la información del usuario necesita ser deserializado para extraer
la información del usuario de nuestra información de sesión que se almacena en el lado del servidor.
Ahora esta
operación de serialización y deserialización ya está soportada por Passport-Local Mangoose a través
del usuario serialize y
los métodos de usuario deserialize que están disponibles en el plugin Passport-Local Mangoose.
Así que después de haber visto esto,
ahora veremos en el ejercicio lo fácil que es configurar la
estrategia local para autenticar usuarios usando los
módulos Passport, Passport-Local y Passport-Local Mangoose Node.