2011-04-04 20 views
10

¿Cuáles son buenas opciones de marco para la seguridad web en una aplicación web de Scala? Nos gustaría probar el desarrollo web de Scala, pero aún no hemos podido encontrar buenos marcos de seguridad de aplicaciones web de Scala.Seguridad de la aplicación web Scala

Desde el lado de Java sé al menos Spring Security y Apache Shiro.

¿Tiene experiencia con los marcos de seguridad de la aplicación web Scala o con Spring Security/Apache Shiro en un contexto Scala?

Respuesta

4

Lift tiene seguridad horneada como se describe here por David Pollak, autor de Lift.

+1

más información aquí: http://seventhings.liftweb.net/security – shellholic

+0

Gracias por la respuesta, pero también estoy buscando enfoques generales, que son independientes del marco web –

4

Utilicé Spring Security en la pequeña aplicación web Scala. Lo creé cuando comencé a aprender Scala y traté de usar la pila completa de Java: Spring MVC + Spring + Spring Security + Hibernate + BlazeDS (también utilicé Flex en este proyecto para la interfaz). Ahora puedo decir que fue una experiencia realmente agradable y positiva. En general, la pregunta es qué tan buena Scala se integra con Spring e Hibernate. Tuve que usar @BeanProperty o @BeanInfo y colecciones java en entidades.

Pero no me he enfrentado a ningún problema real desde el lado de la seguridad de primavera. Funcionaba como se esperaba. Solo recuerdo un problema menor con Spring AOP: las clases de servicio publicaban sus métodos a través de BlazeDS a la aplicación flex. También los aseguré con las ACL del objeto de Spring Security (con <security:intercept-methods /> y <security:protect />). Todo esto, por supuesto, es posible debido a la magia AOP. Así que noté el comportamiento de Spring AOP conectado: si su clase implementa algunas interfaces, usará los proxies de JDK para implementarlas y delegar todas las llamadas al destino, pero si la clase no implementa ninguna interfaz, usará cglib para extender su clase y delegar cada llamada al método. El problema es que mis clases de servicio público no implementan ninguna interfaz, pero el AOP no funcionaba correctamente. El motivo es la interfaz ScalaObject que implementan todas las clases scala. Así que creé nuevos rasgos para todos los servicios públicos a fin de resolver este problema (no he encontrado ninguna forma de configurar Spring AOP - parece que este comportamiento está codificado).

Como puede ver, no es un problema utilizar Spring Security con Scala. Creo que debería ser aún más fácil usar Apache Shiro porque dice ser completamente independiente del contenedor o del entorno (escuché que es posible usar Spring Security fuera de Spring, pero también escuché que es bastante doloroso). Generalmente en Scala puedes archivar todo lo que puedas en Java. La pregunta es cuán bonito/idiomático/puro/código libre resultante sería libre.

Por cierto, hay un nuevo proyecto que integra Lift con Apache Shiro: lift-shiro. Here también puede encontrar small blog post al respecto.

Espero que esto ayude.

+0

gracias por la respuesta. El problema relacionado con el proxy ScalaObject es realmente bueno de saber. –

Cuestiones relacionadas