Brainstorming inicial

Hoy ha sido el primer día que hemos quedado para desarrollar después de inscribirnos. El día se ha desarrollado tres fases básicamente.

Retoques al diseño

Primero, temprano por la mañana hemos decidido darle un poco más de forma al proyecto que teníamos en mente. Para ello hemos hecho un par de diagramas de secuencia para definir el protocolo de enlazamiento del bot de Telegram con el cliente instalado en la máquina. Adémas de esto hemos barajado la posibilidad de que el sistema tenga dos modos de funcionamiento.

Por un lado, que cuando el usuario necesite autenticar una acción en el equipo, que sea éste el que solicite un código que caduque (TOTP) al bot e introducirlo como si fuera una contraseña.

La otra opción es que cuando el usuario quiera autenticar, solamente tenga que pulsar un botón en la interfaz del chat con el bot y que automáticamente se autentifique. Esto conlleva tener un servidor web en marcha y que el cliente tenga que realizar un long-polling comprobando si se tiene acceso o no.

La opción más cómoda para el usuario hemos decicido que será la segunda así que hemos empezado a implementar esta, aunque probablemente sea necesario implementar la otra también para utilizarla en caso de que la máquina del cliente no tenga conexión de red.

Desarrollo

Tras todo el tiempo invertido en el diseño y en plantear muy bien como se va a realizar la implementación nos hemos puesto a programar. Realmente tampoco tiene mucho misterio ya que todo el proyecto se separa en dos partes.

El servidor web y el bot de telegram serán un único programa y estará programado el Python. Se utilizará la biblioteca de python-telegram-bot para el bot, flask para el servidor web y pyotp para la generacíon de los códigos con caducidad.

El cliente estará programado en Go utilizando la biblioteca pquerna/otp para la generacíon de los codigos TOTP.

Más diseño

Al final del día hemos conseguido implementar en enlazamiento del cliente con el bot de telegram y la generación de las claves, lo cual no está mal, pero nos faltaba saber cómo hacer para hacer que nuestra aplicación fuera la que autenticara al usuario en el sistema. Para ello hemos pensado en implementar un modulo PAM.

Crear un modulo PAM es algo nuevo para nosotros. Si, hemos usado PAM alguna vez para habilitar el login utilizando el lector de huellas del portatil y demás, pero crear uno de cero es algo nuevo y será un reto al que enfrentarse ya que será una parte principal para la integración de nuestra aplicación con el OS.

Ha sido un día realmente largo, de hecho hemos estado alrededor de 11 horas seguidas hablando, diseñando y programando, pero está tomando ya forma el proyecto y la verdad es que estamos muy contentos con el resultado.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s