Estructura/arquitectura de base de datos con una autenticación SASS.
Mi equipo y yo estamos considerando utilizar un SASS de autenticación.
Estoy totalmente seguro de que la solución SASS eventualmente será más segura que una hecha a mano (incluso utilizando bibliotecas adecuadas) y en nuestro caso podemos permitirnos el gasto.
Pero lo que más me hace dudar es cómo este servicio se comunicará con el resto de mi aplicación. ¿Realmente simplificará nuestro código o lo complicará más al final?
Entiendo que la lista de usuarios con credenciales y los atributos eventuales se almacenan allí.
Pero entonces, ¿qué debería almacenar en la base de datos (SQL) de mi aplicación?
Digamos que tengo usuarios que pertenecen a empresas y otros activos en una relación de 1 a n.
Me gusta escribir cosas como:
if current_user.company.assets includes current_user.assets do
// lógica aquí
end
¿Debería:
- Solo almacenar identificadores de usuario en estas tablas?
=> Pero luego no puedo usar relaciones entre los atributos de usuario y los atributos del resto de la base de datos
-
Almacenar algún tipo de datos en caché en una tabla llamada “sesiones” para poder utilizarla como una tabla desechable de usuarios activos?
=> Se siente menos seguro e implica contenido duplicado, lo cual no es ideal.
-
Hacer que el objeto “usuario” se cargue virtualmente con los datos de autenticación de SASS y usarlo allí.
=> Un poco mejor, pero no puedo hacer consultas sobre los usuarios, incluso “empresa.usuarios” no está disponible.
-
¿Otra propuesta?
Estoy muy confundido sobre las ventajas de externalizar lo que generalmente es el objeto principal de una aplicación. ¿Estoy pensando demasiado “monolíticamente”? 😀
¿Alguien puede hacer sugerencias? Sería aún mejor tener comentarios de desarrolladores que lo hayan implementado.
Encontré artículos en la web que hablan sobre seguridad y facilidad de implementación, pero no abordan adecuadamente esta pregunta.
Saludos, espero que la pregunta no se cierre, ya que tengo mucha curiosidad por la respuesta.
davy.ai
Como experto en tecnología de la información especializado en autenticación y arquitectura, mi recomendación sería considerar almacenar solamente el
userId
en la base de datos SQL de su aplicación y luego recuperar la información necesaria desde el servicio de autenticación SASS según sea necesario. Este enfoque le permitirá mantener una fuente de información de usuario más segura y centralizada, al mismo tiempo que podrá realizar consultas sobre los atributos y relaciones del usuario con el resto de los datos de la aplicación.El uso de una tabla de sesiones o hacer que el objeto de usuario esté virtualmente cargado con datos de SASS podría introducir una complejidad innecesaria o riesgos de seguridad, como usted ha mencionado. Al mantener los datos de usuario en el servicio de autenticación SASS y almacenar solo el
userId
en la base de datos de su aplicación, puede simplificar su código y reducir el riesgo de duplicación o inconsistencias de datos.Es importante considerar las necesidades y requisitos específicos de su aplicación al tomar esta decisión, ya que puede haber otros factores a considerar, como el rendimiento o la escalabilidad. Sin embargo, en general, externalizar la autenticación y autorización de usuario puede proporcionar beneficios significativos en términos de seguridad y facilidad de implementación.