No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Autenticación con Passport.js

9/22
Recursos

Aportes 5

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

npm install --save @nestjs/passport passport passport-local
npm install --save-dev @types/passport-local

Si no les funciona la autenticacion probablemente sea porque estan usando el campo de email, passport por defecto espera un username y un password. Para que funcione con email en el contructor por medio del metodo super de local.stretegy.ts se debe indicar de la siguiente maneral:

constructor(private authService: AuthService) {
    super({ usernameField: 'email' });
  }

Un aporte que tengo que decir con conocimiento mas profundamente de hashing , es que si bien Nico dijo que en “bcrypt.compare(password_entrada, password_guardada)” solamente el usuario “desencriptará” para ver si la contraseña es la original, esto no es así.

Nadie desencripta la contraseña, de hecho, con la funcion hash, es imposible saber su dominio. A esto se le llama one way function, una one way function es una funcion que toma una entrada y arroja una salida,
podemos establecer la relacion desde entrada -> salida, pero jamas salida -> entrada, es decir sabiendo la salida nunca vamos a determinar la entrada.

Por ende, en este caso, lo que hace bcrypt.compare realmente no es “deshashear” el hash guardado y ver si es compatible con la password_entrada en texto plano, seria muy inseguro esto, ya que le daria saber a los atacantes que se puede obtener entrada con salida y no.

Lo que hace realmente es tomar el password_entrada, y utilizar bcrypt.hash(password_entrada, salt) donde esta salt es la MISMA que la que se usó en el bcrypt.hash de la password_guardada, posteriormente este hash a la password_entrada se compara con password_guardada (que ya esta en version hash), de esta forma nadie desencriptará nada.

La salt y rounds son dos cosas distintas.
Salt es un texto extra que se le adiciona a la entrada para proveer de mas seguridad al hasheado, ejemplo, si el usuario digita su password para guardar “pepito123” y la salt es "qwerty) el hash guardado no sera el hash de “pepito123” sera el hash “pepito123”+salt , o sea concatenados.
Las rounds son cuantas veces se vuelve a hashear en un hash, o sea, si tengo un hash de 2 rounds, significa
password_entrada -> hash(password_entrada) -> hash(hash(password_entrada)), matematicamnete se conoce como composicion de funciones. La entrada de una es la salida de la anterior.

nest generate service auth/services/auth

👏