es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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.

Comments are closed.