Tabla de Usuarios Común para Autenticación Inicial
Crea una tabla común de autenticación en una base de datos principal que contenga información básica de todos los usuarios, sin importar el cliente. Esta tabla podría llamarse usuarios_comun y contener solo lo esencial:
ID de usuario
Nombre de usuario o email (clave única)
Hash de la contraseña (o campo equivalente si usas otro método de autenticación)
Nombre de la base de datos: Identificador que indica a cuál base de datos lógica pertenece cada usuario.
Roles o permisos básicos (opcional)
Esta tabla se usaría solo para el proceso de autenticación inicial.
Autenticación en API Gateway con Lambda (Función de Login)
Aplicación Android llama a una función Lambda de autenticación que consulta la tabla usuarios_comun para validar el usuario y obtener el identificador de la base de datos.
Si el usuario se autentica correctamente, la Lambda genera un token JWT o un token de sesión que incluye el identificador de la base de datos y otros datos de sesión, como el rol del usuario, permisos, etc.
Este token se devuelve a la aplicación Android y se usará en todas las solicitudes posteriores.
Redirección a la Base de Datos Correspondiente en la Lógica de API
Con el token generado en la autenticación, cada solicitud de la aplicación Android a la API incluye el token, que la Lambda correspondiente puede verificar y descifrar.
La Lambda de cada endpoint puede extraer del token el identificador de la base de datos y, con este, conectarse a la base de datos lógica adecuada en la instancia de RDS para realizar las operaciones necesarias sin tener que revisar cada base de datos ni cada tabla de usuario individual.
Este enfoque permite que todas las APIs sean las mismas para todos los clientes, ya que la variabilidad de datos entre clientes la maneja la Lambda basada en el identificador de la base de datos que contiene el token.
Ventajas del EnfoqueEscalabilidad: No necesitas revisar cada base de datos lógica en RDS, ya que el token contiene el identificador necesario.
Seguridad: La autenticación inicial se realiza en una tabla centralizada, lo que simplifica la gestión de accesos y roles.
Flexibilidad: Puedes tener el mismo esquema y las mismas APIs para todos los clientes, solo cambiando el identificador de base de datos en el token.
Simplicidad en el Código: El código en las Lambdas será genérico y se conectará a la base de datos según el identificador que esté en el token.
Ejemplo de Implementación Básica
Login (Lambda de Autenticación):
La función Lambda recibe credenciales de la aplicación Android, consulta la tabla usuarios_comun y verifica las credenciales.
Si las credenciales son válidas, genera un token JWT que incluye el identificador de la base de datos del usuario y los roles o permisos necesarios.
Operaciones en API (Lambda de Endpoint)
En cada solicitud de la app Android, la Lambda correspondiente extrae el token, lo verifica y obtiene el identificador de la base de datos.
La Lambda usa este identificador para conectar a la base de datos lógica correspondiente en la instancia RDS y realiza la operación solicitada.
Consideraciones de Seguridad y Configuración
Gestión de Claves para el Token: Usa AWS Secrets Manager o AWS KMS para almacenar y manejar las claves de firma de los tokens.
Tiempo de Expiración del Token: Para mayor seguridad, configura un tiempo de expiración en el token y realiza la renovación periódica.
Conexión a Base de Datos Basada en Identificador: Al usar el identificador de base de datos en el token, asegúrate de que la Lambda construya la conexión a RDS según el identificador, evitando conexiones innecesarias.
Tabla de Usuarios Común para Autenticación Inicial
Crea una tabla común de autenticación en una base de datos principal que contenga información básica de todos los usuarios, sin importar el cliente. Esta tabla podría llamarse usuarios_comun y contener solo lo esencial: ID de usuario Nombre de usuario o email (clave única) Hash de la contraseña (o campo equivalente si usas otro método de autenticación) Nombre de la base de datos: Identificador que indica a cuál base de datos lógica pertenece cada usuario. Roles o permisos básicos (opcional) Esta tabla se usaría solo para el proceso de autenticación inicial.
Autenticación en API Gateway con Lambda (Función de Login)
Con el token generado en la autenticación, cada solicitud de la aplicación Android a la API incluye el token, que la Lambda correspondiente puede verificar y descifrar. La Lambda de cada endpoint puede extraer del token el identificador de la base de datos y, con este, conectarse a la base de datos lógica adecuada en la instancia de RDS para realizar las operaciones necesarias sin tener que revisar cada base de datos ni cada tabla de usuario individual. Este enfoque permite que todas las APIs sean las mismas para todos los clientes, ya que la variabilidad de datos entre clientes la maneja la Lambda basada en el identificador de la base de datos que contiene el token.
Ventajas del Enfoque Escalabilidad: No necesitas revisar cada base de datos lógica en RDS, ya que el token contiene el identificador necesario. Seguridad: La autenticación inicial se realiza en una tabla centralizada, lo que simplifica la gestión de accesos y roles. Flexibilidad: Puedes tener el mismo esquema y las mismas APIs para todos los clientes, solo cambiando el identificador de base de datos en el token. Simplicidad en el Código: El código en las Lambdas será genérico y se conectará a la base de datos según el identificador que esté en el token. Ejemplo de Implementación Básica Login (Lambda de Autenticación):
La función Lambda recibe credenciales de la aplicación Android, consulta la tabla usuarios_comun y verifica las credenciales. Si las credenciales son válidas, genera un token JWT que incluye el identificador de la base de datos del usuario y los roles o permisos necesarios. Operaciones en API (Lambda de Endpoint)
En cada solicitud de la app Android, la Lambda correspondiente extrae el token, lo verifica y obtiene el identificador de la base de datos. La Lambda usa este identificador para conectar a la base de datos lógica correspondiente en la instancia RDS y realiza la operación solicitada. Consideraciones de Seguridad y Configuración Gestión de Claves para el Token: Usa AWS Secrets Manager o AWS KMS para almacenar y manejar las claves de firma de los tokens. Tiempo de Expiración del Token: Para mayor seguridad, configura un tiempo de expiración en el token y realiza la renovación periódica. Conexión a Base de Datos Basada en Identificador: Al usar el identificador de base de datos en el token, asegúrate de que la Lambda construya la conexión a RDS según el identificador, evitando conexiones innecesarias.