Foros del Web » Programación para mayores de 30 ;) » Java »

Integracion Spring Security 3, JSF2, RichFaces 4 y Hibernate

Estas en el tema de Integracion Spring Security 3, JSF2, RichFaces 4 y Hibernate en el foro de Java en Foros del Web. Hola!, ante todo me presento, mi nombre es Juan Manuel, y soy de Argentina! En esta oportunida estoy tratando de configurar una aplicacion web que ...
  #1 (permalink)  
Antiguo 06/05/2011, 08:37
 
Fecha de Ingreso: mayo-2011
Mensajes: 3
Antigüedad: 13 años, 6 meses
Puntos: 0
Integracion Spring Security 3, JSF2, RichFaces 4 y Hibernate

Hola!, ante todo me presento, mi nombre es Juan Manuel, y soy de Argentina!

En esta oportunida estoy tratando de configurar una aplicacion web que combine las tecnologias que menciono en el titulo de este thread.

He logrado configurar correctamente jsf2 y richfaces, eso funciona OK. Uso faces-config.xml para establecer mis reglas de navegacion, manejo skins, tengo todos los taglibs correspondientes, etc... Todo esta como debe estar.

Pero para esta aplicacion necesito autenticacion de usuarios y manejo de roles, es por esto que decidi usar spring security 3 y aqui empezaron los problemas. Logre configurar spring security para que me muestre un formulario de login basico (el que trae spring) y usando nombres de usuarios y contrasenas hardcodeados en el security-context.xml funciona bien, esto quiere decir, cuando trato de acceder a un recurso que requiere de un usuario logueado, este formulario aparece y luego de loguearme correctamente veo la pagina que queria ver.

Hasta aca todo bien, pero me surgieron dos problemas que no se como resolver.

El primero tiene que ver con el login. Yo he definido templates para mi aplicacion y quiero tener una pagina de login que utilice estos templates y que sea la que utilice spring security para autenticar usuarios. He intentado crear la pagina de login y un loginBean para autenticarme pero no funciono. Asi que mi primer pregunta es:

Como es la forma correcta de crear esta pagina de login personalizada y que el formulario (<h:form>) siga el proceso de login de spring y de ser posible como integro todo esto para que los usuarios, contrasenas y roles esten en una base de datos?

La segunda cosa tiene que ver con las reglas de navegacion. Yo utilizo faces-config.xml para definir mis reglas de navegacion, es decir, de la pagina /faces/home.xhtml quiero ir a /faces/admin/home_admin.xhtml con el action "goAdminHome". Luego en la pagina /faces/home.xhtml pongo un <h:commandLink action="goAdminHome" value="Ir al home de administracion"/> y siguiendo la regla definida en faces-config.xml cuando hago click en ese link voy a esa pagina, el problema es que desde que configure spring security, me pasan dos cosas: la primera es que cuando hago click no importa si el usuario tiene rol de administrador, la pagina es redirigida y mostrada igual. Y la segunda es que la url queda mal formada, queda algo del estilo: "http://localhost:8080//faces/home.xhtml" cuando en realidad estoy viendo /faces/admin/admin_home.xhtml y como si fuera poco los estilos de la pagina mostrada quedan "raros". Realmente n o se como solucionar esto. Osea que la segunda pregunta es: Cual es la forma correcta de declarar reglas de navegacion para las paginas usando jsf2 y spring security 3? Quizas sea Spring WebFlow 2?

Bueno para terminar les dejo mis archivos de configuracion para ver si les sirve de algo! Un fuerte abrazo a todos y gracias!

JM

web.xml
Código:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/applicationContext-security.xml
        </param-value>
    </context-param>

    <context-param>
        <param-name>webAppRootKey</param-name>
        <param-value>barmanagement.root</param-value>
    </context-param>

    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/classes/log4j.properties</param-value>
    </context-param>

    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <listener>
        <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
    </listener>

    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

    <context-param>
        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
        <param-value>/WEB-INF/springsecurity.taglib.xml</param-value>
    </context-param>

    <context-param>
        <param-name>org.richfaces.skin</param-name>
        <param-value>blueSky</param-value>
    </context-param>

    <context-param>
        <param-name>org.richfaces.enableControlSkinning</param-name>
        <param-value>true</param-value>
    </context-param>

    <context-param>
        <param-name>org.richfaces.enableControlSkinningClasses</param-name>
        <param-value>false</param-value>
    </context-param>

    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>

    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>

    <welcome-file-list>
        <welcome-file>/faces/home.xhtml</welcome-file>
    </welcome-file-list>
</web-app>
applicactionContext-security.xml
Código:
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">
    
    <http auto-config='true' access-denied-page="/accessDenied.xhtml">
        <intercept-url pattern="/resources/**" filters="none" />
        <intercept-url pattern="/templates/**" filters="none" />
        <intercept-url pattern="/login.xhtml*" filters="none" />
        <intercept-url pattern="/faces/tickets/**" access="ROLE_ADMIN, ROLE_USER" />
        <intercept-url pattern="/faces/admin/**" access="ROLE_ADMIN" />
        <intercept-url pattern="/faces/home.xhtml*" access="IS_AUTHENTICATED_FULLY" />
        <form-login />
        <logout logout-success-url='/faces/home.xhtml'
                logout-url="/logout"
                invalidate-session="true"/>

        <session-management invalid-session-url="/timeout.xhtml">
            <concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
        </session-management>

    </http>

    <authentication-manager>
        <authentication-provider>
            <user-service>
                <user name="admin" password="admin" authorities="ROLE_ADMIN, ROLE_USER" />
                <user name="jmdiaz" password="jmdiaz" authorities="ROLE_USER" />
            </user-service>
        </authentication-provider>
    </authentication-manager>

</beans:beans>
faces-config.xml
Código:
<?xml version='1.0' encoding='UTF-8'?>

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config version="2.0"
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
    <navigation-rule>
        <from-view-id>/faces/home.xhtml</from-view-id>
        <navigation-case>
            <from-action>goTicketsHome</from-action>
            <to-view-id>/faces/tickets/tickets_home.xhtml</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-action>goAdminHome</from-action>
            <to-view-id>/faces/admin/admin_home.xhtml</to-view-id>
        </navigation-case>
    </navigation-rule>
</faces-config>
  #2 (permalink)  
Antiguo 10/05/2011, 07:51
 
Fecha de Ingreso: mayo-2011
Mensajes: 3
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Integracion Spring Security 3, JSF2, RichFaces 4 y Hibernate

Nadie ha logrado esto? Espero que si!!

Abrazo,
JM
  #3 (permalink)  
Antiguo 13/09/2011, 18:25
 
Fecha de Ingreso: octubre-2008
Mensajes: 3
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Integracion Spring Security 3, JSF2, RichFaces 4 y Hibernate

Hola, creo que estoy próximo a encontrarme con el mismo problema :S y espero que le ya tengas una solución, de ser asi me serviria mucho que la compartieras, si aun no ps por ahi encontre este post donde realizan algo similar pero con primefaces (http://jamacedo.com/tag/primefaces/), espero nos sirva...

Un saludo.

Etiquetas: hibernate, richfaces, security, spring
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:53.