![Google Authenticator](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj69Qk5ZbV3uqV2cNoPgzo88fmmPTxw71IOrXoJUlMj0-jIJAaO-N05sCTsIdZYgIE6r262ygkDryE2u4ldmQ-KeRsKx0kCmnF8is3_8GeqLF6paUaP0sSCeXeXhtP-QEHB8wRhtiVhCGjm/s200/QRC.png)
Autenticacion de Doble Factor Usando Google Authenticator y ASP.MVC
Esta es una guia tecnica de como implementar Autenticación de Doble Factor (2FA) usando la aplicación móvil Google Authenticator y ASP.MVC con C#.
Las aplicaciones que autentican al usuario simplemente pidiendo el nombre de usuario y el password no son tan efectivas para la seguridad de nuestros sistemas y representan un gran riesgo que permite a personas robar el password de nuestros usuarios. Una computadora podría ejecutar algoritmos que intenten calcular y descifrar passwords en una mínima cantidad de tiempo. Las personas no somos tan rápidas como las máquinas especialmente tratando de infiltrar un sistema que tiene una fuerte criptografía.
Los desarrolladores de programas deberían implementar al menos dos de las tres formas de autenticar a un ser humano:
- Con algo que usuario sabe: nombres de usuario, pases secretos, preguntas relacionadas con el usuario.
- Con algo que el usuario posee: un teléfono celular, memoria USB, tarjetas
- Con algo que el usuario es: huellas digitales, reconocimiento de retina y otras formas de biometría
La aplicación móvil llamada Google Authenticator nos ayuda a incorporar autenticación de doble factor agregando una capa adicional de seguridad a nuestras aplicaciones con algo que usuario sabe y con algo que el usuario tiene.
Hay varios lenguajes de programación y tecnologías en las que podríamos implementar Autenticación de Doble Factor pero les mostrare como hacerlo usando ASP.MVC 5 y C#.
Los siguientes pasos son una guía general para comenzar con un proyecto en Visual Studio que implementa Google Authenticator. Para mayor claridad pueden ver y bajar el código completo de este proyecto y pueden visitar mi página personal con el demo en vivo de este proyecto.
- Abre Visual Studio y crea un nuevo proyecto ASP.MVC
- Instala Google Authenticator usando Nuget Packages
- Crea una clase pública que tenga al menos dos propiedades públicas una para el nombre del usuario y la otra para el password. Yo nombre mi clase LoginModel
- Crea un MVC Controller que tenga un método de ActionResult para la página de Login
- Agrega un View para el nuevo método Login de tipo ActionResult creado en el paso 4 y usa el LoginModel creado en el paso 3
- Crea otro metodo tambien de tipo ActionResult que usaremos cuando el usuario haya pasado la primera autenticación de usuario y password. Los usuarios autenticados de manera satisfactoria serán enviados a otra página. De lo contrario recibiran un error.
- Crea un View para el ActionResult creado en el paso 6 pero esta vez no pasaremos ninguna clase modelo como parámetro
- Agrega un método más de tipo ActionResult para verificar el token obtenido como parte de la autenticación de doble factor usando el Google Authenticator
- Configura la aplicación para que la página de Login creada en el paso 5 sea la página inicial
- Ejecuta la aplicación. Entra usuario y password. Luego usa la tu celular para usar la aplicación móvil Google Authenticator y escanear o manualmente entrar el código que muestra la aplicación web.
- Google Authenticator mostrara un token de 6 digitos si el codigo o QR son correctos