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?

o inicia sesi贸n.

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 鈥渂crypt.compare(password_entrada, password_guardada)鈥 solamente el usuario 鈥渄esencriptar谩鈥 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 鈥渄eshashear鈥 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 鈥減epito123鈥 y la salt es "qwerty) el hash guardado no sera el hash de 鈥減epito123鈥 sera el hash 鈥減epito123鈥+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

馃憦