Pregunta

El sistema actualmente estoy trabajando en requiere algo de la seguridad basada en roles, que se encuentra bien atendidos en Java EE de la pila.El sistema pretende ser un marco para el dominio de la empresa de expertos para escribir su código en la parte superior de.

Sin embargo, hay también un requisito para que los datos security.Es decir, qué información es visible para un usuario final.

Esto significa la reducción de la visibilidad a las filas (y tal vez incluso columnas) en la base de datos.

Estamos usando Hibernate para nuestra persistencia.Sin embargo, estamos utilizando nuestras propias anotaciones para no exponer a nuestros persistencia de elección para el negocio de los expertos de dominio.

Para la fila de seguridad basada esto significa que podríamos añadir una anotación como @Secured a nivel de la entidad, lo que podría provocar una columna adicional para ser añadido a la tabla subyacente a limitar nuestras selecciona?

Para la columna en función de la seguridad, tal vez podríamos tener @Secured ya sea para ayudar en la generación de consultas, o tal vez el uso de un aspecto para filtrar la información devuelta?

Tengo curiosidad por saber cómo esto podría afectar a hibernate mecanismos de almacenamiento en caché así?

Estoy seguro de que muchos otros han tenido el mismo problema, y me preguntaba cómo se acercó a esto?

Muy apreciado...

¿Fue útil?

Solución

Hibernate tiene un mecanismo de filtrado que puede trabajar para usted.Los filtros de reescritura de las consultas de hibernate genera para incluir una cláusula adicional para limitar las filas devueltas.No soy consciente de nada en modo de hibernación para enmascarar/ocultar columnas.

Su base de datos también puede tener soporte para esta funcionalidad.Oracle, por ejemplo, tiene el Base De Datos Privada Virtual (VPD), que vuelve a escribir tu consulta en la base de datos.Esta solución tiene la ventaja adicional de que cualquier programa externo (por ejemplo,herramientas de generación de informes) que va en contra de su db tendrá sus restricciones de seguridad impuestas.VPD también tiene soporte para enmascarar restringido columnas con valores Nulos.

Por desgracia, ninguna de las soluciones anteriores no han sido suficientes para apoyar los requisitos de seguridad para los tipos de proyectos que suelen trabajar.Normalmente hay algún tipo de contexto que no puede ser fácilmente expresada en las soluciones anteriores.Por ejemplo, los usuarios pueden ver los datos que ellos han creado, o que han sido marcados como públicos, o pertenecer a un proyecto que administren.

Típicamente se crean consulta/buscador/objetos DAO donde pasamos los valores necesarios para ejecutar la garantía y, a continuación, crear la consulta correspondiente.

Espero que esto ayude

Otros consejos

Cuando se utiliza Hibernate filtros debe ser consciente de que las restricciones adicionales no serán de aplicación a las sentencias SQL generted por el load() o get() métodos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top