Ticker

6/recent/ticker-posts

Sistema de Autenticación híbrida para aplicaciones web desarrolladas con Streamlit

Este proyecto implementa una Sistema de autenticación híbrida robusta para aplicaciones web desarrolladas con Streamlit. Esta arquitectura garantiza que usuarios con cuentas corporativas o personales de Google accedan sin fricciones, mientras que aquellos sin cuentas externas utilicen un sistema de autenticación local.


CAPÍTULO 1: MARCO ESTRATÉGICO Y CONCEPTUAL

1.1 Resumen del Proyecto

Guía técnica para implementar un sistema de autenticación dual (local/OAuth) en Streamlit, integrando PostgreSQL para la persistencia de usuarios y Google OAuth 2.0 para acceso externo, garantizando seguridad y trazabilidad.

1.2 Introducción y Objetivos

1.2.1. Objetivo del Proyecto

Desarrollar una solución de autenticación modular que permita asegurar el acceso a aplicaciones, facilitando el ingreso de usuarios mediante métodos híbridos validados contra una base de datos centralizada.

1.2.2. ¿Qué problema resuelve el Proyecto?

Resuelve la fragmentación de accesos al unificar, bajo una misma plataforma, usuarios locales (base de datos) y externos (Google), eliminando la necesidad de gestionar múltiples sistemas de credenciales independientes.

1.3 Alcance y Limitaciones (Fronteras Operativas)

1.3.1. Qué HACE la Solución (Alcance)

Valida credenciales locales usando hashes bcrypt, gestiona el flujo completo de OAuth 2.0 con Google, realiza aprovisionamiento automático de usuarios (JIT) y protege rutas privadas en el dashboard.

1.3.1. Qué NO HACE la Solución (Limitaciones Críticas)

No incluye gestión avanzada de roles o permisos (RBAC), recuperación de contraseñas vía correo electrónico, ni cifrado en reposo para la base de datos (se requiere configuración de infraestructura externa).


CAPITULO 2: DIAGRAMA DE ARQUITECTURA

2.1. Principales componentes

La arquitectura se organiza en capas jerárquicas que separan la interfaz de usuario, la lógica de negocio y persistencia.



  • Frontend (Streamlit): Capa de presentación que gestiona la interacción del usuario.
  • Capa Autenticación: Lógica de validación de hashes y gestión de tokens OAuth.
  • Capa Datos: Interfaz de conexión segura mediante psycopg2 hacia el repositorio.
  • Base Datos (PostgreSQL): Almacenamiento persistente de usuarios y estados de credenciales.

2.2. Arquitectura de la Solución

Este proyecto implementa una solución de autenticación híbrida robusta para aplicaciones web desarrolladas con Streamlit, resolviendo la necesidad de gestionar accesos de forma flexible y segura. El sistema permite dos métodos de validación: mediante credenciales almacenadas localmente en una base de datos PostgreSQL, protegidas con algoritmos de hashing, y mediante el protocolo OAuth 2.0 integrado con Google Identity.


Los usuarios con cuentas corporativas o personales de Google accedan sin fricciones, mientras que aquellos sin cuentas externas utilicen un sistema de autenticación local. En conjunto, esta solución proporciona una puerta de enlace escalable, segura y centralizada para proteger el contenido privado de cualquier panel administrativo.

2.3. Stack de tecnología (Tech Stack)

Este conjunto de herramientas asegura el rendimiento, seguridad y alta compatibilidad en el ecosistema de Python moderno.

Capa ArquitectónicaTecnología / HerramientaVersión / ComponentePropósito Operativo en el Código
PresentaciónStreamlit1.x+Renderizado de UI y estados de sesión
AutenticaciónAuthlib1.3.xImplementación protocolo OAuth 2.0
SeguridadBcrypt/Hasher0.4.2Hashing y verificación de contraseñas
PersistenciaPostgreSQL15.xAlmacenamiento centralizado de usuarios
IntegraciónPsycopg22.9.xConectividad Python a Postgres

2.4. Requerimientos No Funcionales (RNF)

2.1.1. Escalabilidad

La arquitectura permite desacoplar el servicio de autenticación hacia un microservicio independiente (ejemplo: Keycloak o Auth0) sin modificar drásticamente la lógica del Dashboard en el futuro.

Integrar Auth0 como Proveedor de Identidad (IdP) en Keycloak permite delegar la autenticación de los usuarios a Auth0. El proceso consiste en registrar Keycloak en Auth0 como una Aplicación (OIDC), y luego configurar Auth0 como un IdP externo en la consola de administración de Keycloak

2.1.2 Disponibilidad y Rendimiento

La validación se realiza mediante conexiones eficientes a la base de datos, mientras que el uso de cookies y sesiones (State Management) minimiza la latencia en cada navegación.


CAPÍTULO 3: APIS, INTEGRACION Y VALIDACION

3.1 Lista de APIs aplicados en la solución

  • Google OAuth2 API: Gestiona el protocolo de autorización y obtención del perfil de usuario remoto.
  • Google UserInfo API: Endpoint que retorna los datos básicos del usuario autenticado tras validar token.

Mecanismo de Integración: Se integra mediante Authlib para realizar el intercambio de códigos de autorización por tokens de acceso mediante peticiones HTTP seguras.



3.2. Validación en la Integración

Se validan credenciales locales contra hashes y tokens de Google contra la base de datos para asegurar el acceso autorizado.



CAPÍTULO 4: CODIGO DEL PROYECTO

4.1. Estructura del Proyecto

ItemNombreIntegración (SI/NO)Funcionalidad
1app.pySILógica principal de login y OAuth
2db_connector.pySIConexión y consultas a PostgreSQL
3pages/dashboard.pySIInterfaz de contenido privado
4.envSIAlmacenamiento de credenciales seguras

Configuración Google OAuth 2.0:

  1. Crear proyecto en Google Cloud Console.
  2. Configurar pantalla de consentimiento (OAuth externo).
  3. Crear credenciales ID de cliente (tipo App Web).
  4. Configurar URI de redireccionamiento a http://localhost:8501/.

4.2. Dependencias según el archivo dependencias.sh

ItemsDependenciaFuncionalidad en el código
1StreamlitUI del portal y dashboard
2AuthlibGestión de protocolos OAuth
3Psycopg2-binaryConector de base de datos
4Python-dotenvCarga de variables de entorno

4.3. Configuración e instalación

  • Bash / Linux / iOS: pip install -r requirements.txt (o ejecutar bash dependencias.sh).
  • PowerShell: pip install streamlit authlib psycopg2-binary python-dotenv requests.

4.4. Guía de Ejecución

  1. Configurar variables en .env.
  2. Crear tabla usuarios en Postgres.
  3. Ejecutar streamlit run app.py en la terminal.

RESUMEN

La introducción describe el problema resuelto mediante autenticación híbrida y segura. El marco estratégico define objetivos, alcances y limitaciones del sistema implementado. La arquitectura de componentes organiza lógicamente la interacción mediante capas tecnológicas definidas. Las APIs facilitan la integración externa y el flujo de validación segura. El despliegue detalla la configuración técnica, dependencias y pasos para su ejecución.


Proyecto elaborado por Hadson Paredes - 2026

Publicar un comentario

0 Comentarios