Closed pavel-kalmykov closed 6 years ago
Desarrollando en two-factor-auth
Ahora, para validar el correo usamos la librería checkmail (sólo validando el formato, ya que comprobar si el correo existe tarda mucho).
Finalmente vamos a utilizar una implementación propia para una mayor simplicidad de implementación.
Finalmente hemos logrado resolver el problema de los nulls en SQL y JSON con la librería null
Es preferible usar un endpoint distinto para la generación del código de verificación y su envío por correo para no mezclarlo con la lógica de negocio propia del login.
La parte de control de inicios de sesión, en realidad, aunque esté relacionada con el factor de doble autenticación, es un concepto diferente y totalmente autónomo a este.
Realizaremos la implementación de esa funcionalidad de seguridad en una issue futura.
En las nuevas funcionaliades añadidas existen algunos valores que deberían de estar parametrizados, pero eso se realizará en #17
Descripción
Para disponer de un añadido de seguridad de que, incluso si un atacante obtuviera nuestras credenciales, no pueda iniciar sesión con total facilidad, queremos implementar un factor de doble autenticación para el usuario para que en el login proporcione, además de sus credenciales, un código de seguridad único que le será enviado a su correo electrónico para comprobar que el inicio de sesión sea legítimo.
Podemos abordar esta implementación de dos formas: buscar una librería que implemente algún algoritmo estándar de factor de doble autenticación o bien que este código sea un simple número de seis dígitos generado aleatoriamente. En cualquier caso, lo más seguro es que necesitemos que dicho código generado, además de enviarlo al correo electrónico, se tenga que almacenar en la base de datos para asociarse al usuario para el cual se ha generado el mismo.
También necesitaremos proporcionar un sistema de detección de intentos (tanto exitosos como fallidos) de inicio de sesión. De esta forma, antes de iniciar sesión, comprobaremos que, si han habido
n
intentos de sesión fallidos en los últimosm
minutos, el usuario no podrá iniciar sesión, ni aunque disponga de los credenciales válidos hasta pasados dichos minutos, por ejemplo.Condiciones de satisfacción
TwoFactorAuth
, que representará el código del factor de doble autenticación. Deberemos de añadir también dicho campo a la tabla de usuarios mediante una migración.n
ym
podrán ser configurables. Si la librería encontrada permitiera realizar esto por sí misma, podríamos aprovecharlo; si no, deberemos de modificar el esquema para añadir las tablas y campos necesarios para poder trabajar con dichos datos, así como implementar los DAO, servicios y modificar los controladores pertinentes.~~ ver https://github.com/paveltrufi/mantecabox/issues/16#issuecomment-392334018Referencias