¿Es conveniente usar Spring Security con vaadin flow?

Muy buenos dias, perdon por la pregunta que pudiera ser muy básica.
Entiendo que la respuesta a la misma depende siempre de muchos aspectos inherentes a la solución que uno tome para la problemática de cada caso. Pero en lineas generales para un aplicativo básico y simple: ¿Que ventajas obtengo de implementar la seguridad con spring ? ¿Conviene usar apache shiro?
Usar spring security seria algo muy bueno en principio, debido como poco a que estoy usando spring boot, pero me cuesta hacerlo, llevo varios dias intentando y me pregunto que beneficios concretos tendría?
¿Que me daria que ya no me lo este dando vaadin Flow con su manejo de seciones, CSRF, etc.?, obvio adjuntandole un minimo desarrollo a mano: usuario con contraseña encriptada y roles en la base de datos, una pantalla al inicio que valide en base a ello y filtrar las vistas conforme el rol del usuario en cada sesión. Yo en vaadin 8 guardaba información de la sesion del usuario con VaadinService.getCurrentRequest().getWrappedSession().setAttribute(dato, valor) que luego consultaba según la conveniencia o necesidades de lógica de la aplicación. Puedo incluso dar tranquilidad a mi paranoia encriptando dato y valor que estaran en una cuki en el cliente. Pero descanso en que no habrá problemas de acoples entre los manejos de sesiones de spring y de vaadin (de seguro provocados por mi torpeza)
¿Puedo seguir haciendo esto si uso spring security?
Entiendo que el mejor modo de acoplar Spring Security a vaadin 10 es con html mediante un template login-view como en el ejmplo Bakery. Pero aún con esto me resulta dificil hacerlo andar en mi proyecto. Antes de dedicarle mas tiempo me pregunto ¿que tanto vale la pena.?
Desde ya muchas gracias.

Hola Victor!
Frameworks de seguridad como el de spring y Apache Shiro, tienen en cuenta aspectos más profundos de seguridad en toda la aplicación que simplemente lo que puede cubrir Vaadin.
Por ejemplo, uno podría, [utilizando anotaciones]
(https://docs.spring.io/spring-security/site/docs/5.0.7.RELEASE/reference/htmlsingle/#access-control-using-preauthorize-and-postauthorize), restringir las llamadas a métodos de la capa de negocios, y eso va mucho más allá de lo que puede hacer Vaadin que solo aplica a la parte de presentación.
Usar Vaadin + Spring Security o Vaadin + Apache Shiro, es un buen combo, ya que permite controlar muchos otros aspectos que van más allá de la seguridad en la interfaz del usuario.
Yo inicialmente recomendaría Spring Security, si ya estás usando Spring, ya que seguramente está mejor integrado que Apache Shiro, el cual está más pensado para entornos en los cuales se utiliza CDI.
Finalmente te recomiendo pegarle una mirada a la [documentación oficial]
(https://docs.spring.io/spring-security/site/docs/5.0.7.RELEASE/reference/htmlsingle/), sobre todo a [la parte de arquitectura]
(https://docs.spring.io/spring-security/site/docs/5.0.7.RELEASE/reference/htmlsingle/#overall-architecture), que te puede ayudar a entender un poco más la vista general de la librería.
Si puedes compartir un poco más acerca de los problemas que estás teniendo, quizás pueda pegarle una mirada y darte una mano.
Saludos!

1 Like

Muchas gracias re-leere nuevamente la documentación y en cuanto pueda me dedicare nuevamente al incorporar spring security a los proyectos. En ese momento te molestaré nuevamente. Previo esfuerzo por no preguntar cosas muy obvias. Nuevamente muchas gracias. Fuerte abrazo desde BsAs Argentina

Buenísimo Victor, suerte con eso!

Y saludos desde Santa Fe Argentina (no estamos tan lejos jaja)

Muchas gracias Martin. Es verdad no estamos lejos.

¿Sabes si existe algún grupo de usuarios de vaadin en Argentina? Sino fuera el caso podríamos iniciarlo

Fuerte abrazo

Hola,estoy intentando incluir spring security a una app que tenia vaadin, he seguido el tutorial a rajatabla pero cuando intento ingresar me dice que credenciales incorrectas y no me redirige a la vista que solicito, me podrían decir que archivo de spring debo verificar y donde es que redirige spring.Adjunto el metodo de usuario y contraseña del archivo SecurityConfiguration del tutorial
18376136.png

Hola, deberías comparar tu codigo con [lo que está en GitHub]
(https://github.com/vaadin-learning-center/crm-tutorial/tree/10-login) a ver que diferencias significativas tienes.

Puedes intentarlo?