2009-11-27 22 views

Respuesta

9

JSecurity en realidad se convirtió en un proyecto de Apache con el nombre Apache Ki hace un tiempo y no estaban contentos con el cambio de nombre por alguna razón y lo cambiaron a Apache Shiro poco después de eso. También Stark es solo una envoltura de plugin de grises para Spring Security y acegi es el origen del proyecto Spring Security.

¿Cuál usar?

En primer lugar, Spring Security es una API de seguridad madurada y ya ampliamente utilizada por lo que desde la estabilidad, el soporte y especialmente el punto de vista de seguridad es una buena opción. Desafortunadamente, Shiro pierde un poco en esto ya que, hasta donde yo sé, todavía falta una adopción generalizada.

En segundo lugar, la forma en que se comporta realmente el marco de seguridad es muy importante, tiene que ser capaz de permitirte hacer tu esquema favorito para proteger tu aplicación. Por ejemplo, mientras que a algunas personas les gusta la forma en que Shiro trabaja (see this tutorial, especialmente la parte bajo el encabezado "Quickstart.java"), otros no podrían vivir sin Spring-Spring, y así sucesivamente. Básicamente, debes probar ambos y averiguar si satisfacen tus necesidades desde el punto de vista de la usabilidad.

En tercer lugar, asegúrese de la seguridad real! Se puede garantizar que Spring Security es seguro; Shiro es más seguro seguro porque ninguna adopción generalizada oculta fácilmente los problemas de seguridad; consulte, por ejemplo, Firefox vulnerabilities para ver cómo la base de usuarios incrementada comienza a afectar la seguridad real de la aplicación a largo plazo.

Para finalizar, si tuviera que elegir para usted, escogería Spring Security porque es ampliamente utilizado, está garantizado que es seguro y está integrado con Grails. JSecurity/Ki/Shiro no está nada mal y lo he usado por un tiempo, pero por el momento está en una especie de estado de limbo por quién sabe qué razón y por un marco de seguridad que es simplemente inaceptable.

Editar: Ha sido más de 1 año y medio desde que respondí esto, así que me sentí la necesidad de volver y decir que nuestra compañía recientemente decidió ir con la primavera de Seguridad debido a su alto enchufabilidad y su funcionalidad probada. Esto, por supuesto, me hace un poco parcial, pero en cualquier caso, diría que Spring Security es el camino a seguir.

+0

Oh, oh, oh, ni siquiera recuerdo haber respondido esta ... Sentí la necesidad de editar en unas pocas líneas :) – Esko

7

La respuesta de Esko es genial y completa. Hice una evaluación de los diferentes marcos hace un mes, y escogí a Shiro como el marco de seguridad subyacente, a pesar de tener experiencia previa con Spring Security. Necesitaba una solución con capacidad para crear requisitos complejos de autorización. El modelo de JSecurity es muy simple, pero muy poderoso.

Lo que finalmente me convenció, es el plugin Nimble, que es una capa de UI encima de Shiro. Le permite administrar usuarios, roles, grupos, creación de cuenta de autoservicio, correo electrónico, etc. y es fácil de integrar en su aplicación. No tener que escribir todo ese código fue una gran victoria para mí. También permite la integración con OpenId, Facebook y otros.

Si Nimble trabajó para SpringSecurity, probablemente lo hubiera elegido, pero lo vi como una gran victoria para mí.

0

Gracias chicos por sus respuestas. De hecho, probé la seguridad de primavera en una aplicación de grails.El plugin de Grails lo hace bastante fácil de usar.

respetos.

Josh

+0

Psst, SO etiqueta es que seleccionas una de las respuestas como "correcta" (* marca de verificación verde debajo del contador de up/downvote *) después de que sienta que le ha dado uno. Lo sé, a veces es difícil porque hay tantas buenas respuestas, pero ayudará a todos en el futuro, especialmente a aquellos que no tienen tiempo para leer cada palabra relacionada con la pregunta. – Esko

1

He usado ambos marcos y encanta la forma Shiro trabaja en comparación con el enfoque de la primavera. No sé por qué Spring Security es tan popular. A diferencia de Shiro, Spring Security se ejecuta sin control en toda la aplicación cada vez que se necesita configuración. ¿No es la seguridad una preocupación transversal para la mayoría de las aplicaciones? Si es así, ¿no sería un "código más limpio" aislarlo en una sola ubicación? Mis dos centavos.