2009-07-27 12 views
14

¿Cuál es la mejor manera de implementar la autenticación y autorización para una aplicación web JSF? Preferiblemente, aún quisiera usar seguridad basada en contenedores, ya que necesito llamar a los EJB que requieren el principal.Autenticación y autorización JSF

realizo la autenticación basada en formularios es una lucha importante con JSF, pero tal vez puedo usar un PhaseListener o algo similar junto con el inicio de sesión programática para autenticar al usuario?

¿Algún otro método que debería tener en cuenta?

+0

¿Puede hacernos saber lo que era su selección? –

+0

Relacionados: http://stackoverflow.com/questions/2206911/best-way-for-user-authentication-on-javaee-6-using-jsf-2-0/2207147#2207147 y http://stackoverflow.com/questions/6189536/programmatically-control-login-with-servlet-3-0/6189810 # 6189810 – BalusC

Respuesta

3

Puede utilizar el marco de la primavera de Seguridad, consulte las instrucciones aquí http://ocpsoft.com/java/acegi-spring-security-jsf-login-page/

+0

Gracias por la sugerencia. ¿Se puede usar Spring Security fuera del Spring Framework? Actualmente tengo JSF directo con Facelets, y me gustaría evitar una dependencia adicional en Spring. – Zecrates

+0

Depende de varios módulos de resorte: web, core y muchos otros (por ejemplo, jdbc si mantiene sus datos de usuario en una base de datos). Sin embargo, no tiene que basar su aplicación en la primavera, simplemente trátela como una biblioteca externa. –

+0

@David: Hola David, ¿Te gustaría decir algo sobre cuándo es bueno pasar de la seguridad basada en contenedores a alternativas como la seguridad primaveral u otras? Vea más preguntas enfocadas aquí: http: // stackoverflow.com/preguntas/7782720/cuando-a-move-de-gestionada por contenedor-seguridad-a-alternativas-como-Apache-shiro –

4

Trate de revisar el blog para using JAAS with JSF. Este es el ejemplo de cómo implementar la JAAS con JSF para la autenticación y autorización.

Espero que ayude.

Tigre

+0

Gracias por el enlace. No estoy seguro de algunas cosas, sin embargo. Supongo que esto reemplazará la autenticación basada en formularios, pero ¿cómo interactúa con mi módulo de inicio de sesión JAAS (en Glassfish un reino). Estoy usando un reino JDBC. Además, ¿no es un PhaseListener una mejor opción para esto que un ActionListener? – Zecrates

+0

@Tiger: ¿Quieres decir algo sobre cuando es bueno para pasar de la seguridad basada en contenedores a alternativas como shiro o para otros? Véase la pregunta más centrado aquí: http: //stackoverflow.com/questions/7782720/when-to-move-from-container-managed-security-to-alternatives-like-apache-shiro –

3

lo uso JSF costura y se han utilizado de costura integrado en la autenticación y autorización y les resulta muy fácil de usar.

Para la autenticación, sólo tiene que poner en práctica el método 1, public boolean login(String username, a String password) { ... } y vuelve booleano. Luego puede marcar las páginas como "requerido para iniciar sesión" y la costura se ocupa del resto.

Para la autorización, Seam te da una anotación @Restrict que puedes poner en tu Controlador o en los métodos de servicio y, una vez más, Seam se ocupa del resto.

autorización avanzada: También puede manejar más advanced authorization with Seam donde los roles son dinámicos - por ejemplo, en un tablero de anuncios, usted es el "autor" de algunas publicaciones, pero "lector" u otras publicaciones, simplemente delegando su anotación @Restricto en un método Java.

Te animo a que veas Seam. Seam es solo una capa encima de JSF, por lo que técnicamente seguirías ejecutándote en JSF. Si por alguna razón no puede usar Seam, tal vez pueda tomar prestadas algunas ideas de cómo Seam maneja la Autorización y la Autenticación en JSF.

2

Se puede utilizar la API de Servlet 3.0 HttpServletRequest como se muestra en esta respuesta a una pregunta JSF 2.0:

JSF 2.0 Simple login page

+0

Esto no es parte de JSF 2. Esto es parte de Servlet 3.0. Así que esto sólo funciona cuando se ejecuta JSF 1.x/2.x/lo que sea en Tomcat 7, Glassfish 3, JBoss AS 6, etc o más reciente. – BalusC

Cuestiones relacionadas