2012-03-14 25 views
10

Por algunas razones de seguridad, decidí desactivar el seguimiento de sesión por jsessionid en la URL. Antes de cambiar mi web.xml por el siguiente, la primera vez que visité la página fue un jsessionid en la url, después de hacer clic en el primer enlace, nunca volvió a aparecer.JBoss 7.0.1 ejecutándose sin jsessionid en la URL no está funcionando

Mis web.xml se parece a

<session-config> 
     <session-timeout>10</session-timeout> 
     <cookie-config> 
     <secure>true</secure> 
     </cookie-config> 
     <tracking-mode>COOKIE</tracking-mode> 
    </session-config> 

ahora tengo la jsessionid en la URL, si hago clic en un eslabón más en la página nunca desaparece. Cambia en cada clic.

Si intento invocar una acción JSF, obtengo un javax.faces.application.ViewExpiredException pero el bean administrado es @SessionScoped.

Ésta es mi árbol de dependencias:

[INFO] Scanning for projects... 
[INFO] Searching repository for plugin with prefix: 'dependency'. 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Java EE 6 webapp project 
[INFO] task-segment: [dependency:tree] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [dependency:tree {execution: default-cli}] 
[INFO] de.project:demoapp:war:1.0-SNAPSHOT 
[INFO] +- javax.enterprise:cdi-api:jar:1.0-SP4:provided 
[INFO] | +- org.jboss.spec.javax.interceptor:jboss-interceptors-api_1.1_spec:jar:1.0.0.Final:provided (version managed from 1.0.0.Beta1) 
[INFO] | \- javax.inject:javax.inject:jar:1:provided 
[INFO] +- org.jboss.spec.javax.annotation:jboss-annotations-api_1.1_spec:jar:1.0.0.Final:provided 
[INFO] +- org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_1.1_spec:jar:1.0.0.Final:provided 
[INFO] +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:provided 
[INFO] +- org.jboss.spec.javax.ejb:jboss-ejb-api_3.1_spec:jar:1.0.1.Final:provided 
[INFO] +- org.hibernate:hibernate-validator:jar:4.2.0.Final:provided 
[INFO] | \- javax.validation:validation-api:jar:1.0.0.GA:provided 
[INFO] +- org.hibernate:hibernate-jpamodelgen:jar:1.1.1.Final:provided 
[INFO] +- junit:junit:jar:4.10:test 
[INFO] | \- org.hamcrest:hamcrest-core:jar:1.1:test 
[INFO] +- org.jboss.arquillian.junit:arquillian-junit-container:jar:1.0.0.CR4:test 
[INFO] | +- org.jboss.arquillian.junit:arquillian-junit-core:jar:1.0.0.CR4:test 
[INFO] | +- org.jboss.arquillian.test:arquillian-test-api:jar:1.0.0.CR4:test 
[INFO] | | \- org.jboss.arquillian.core:arquillian-core-api:jar:1.0.0.CR4:test 
[INFO] | +- org.jboss.arquillian.test:arquillian-test-spi:jar:1.0.0.CR4:test 
[INFO] | | +- org.jboss.arquillian.core:arquillian-core-spi:jar:1.0.0.CR4:test 
[INFO] | | \- org.jboss.shrinkwrap:shrinkwrap-api:jar:1.0.0-beta-5:test 
[INFO] | +- org.jboss.arquillian.container:arquillian-container-test-api:jar:1.0.0.CR4:test 
[INFO] | +- org.jboss.arquillian.container:arquillian-container-test-spi:jar:1.0.0.CR4:test 
[INFO] | +- org.jboss.arquillian.core:arquillian-core-impl-base:jar:1.0.0.CR4:test 
[INFO] | +- org.jboss.arquillian.test:arquillian-test-impl-base:jar:1.0.0.CR4:test 
[INFO] | +- org.jboss.arquillian.container:arquillian-container-impl-base:jar:1.0.0.CR4:test 
[INFO] | | +- org.jboss.arquillian.config:arquillian-config-api:jar:1.0.0.CR4:test 
[INFO] | | \- org.jboss.arquillian.config:arquillian-config-impl-base:jar:1.0.0.CR4:test 
[INFO] | |  \- org.jboss.shrinkwrap.descriptors:shrinkwrap-descriptors-spi:jar:1.1.0-alpha-2:test 
[INFO] | +- org.jboss.arquillian.container:arquillian-container-test-impl-base:jar:1.0.0.CR4:test 
[INFO] | \- org.jboss.shrinkwrap:shrinkwrap-impl-base:jar:1.0.0-beta-5:test 
[INFO] |  \- org.jboss.shrinkwrap:shrinkwrap-spi:jar:1.0.0-beta-5:test 
[INFO] +- org.jboss.arquillian.protocol:arquillian-protocol-servlet:jar:1.0.0.CR4:test 
[INFO] | \- org.jboss.arquillian.container:arquillian-container-spi:jar:1.0.0.CR4:test 
[INFO] |  \- org.jboss.shrinkwrap.descriptors:shrinkwrap-descriptors-api:jar:1.1.0-alpha-2:test 
[INFO] +- javax.mail:mail:jar:1.4.4:compile 
[INFO] | \- javax.activation:activation:jar:1.1:compile 
[INFO] +- javax.servlet:javax.servlet-api:jar:3.0.1:provided 
[INFO] +- org.owasp.esapi:esapi:jar:2.0.1:compile 
[INFO] | +- commons-configuration:commons-configuration:jar:1.5:compile 
[INFO] | | +- commons-lang:commons-lang:jar:2.3:compile 
[INFO] | | +- commons-logging:commons-logging:jar:1.1:compile 
[INFO] | | | +- logkit:logkit:jar:1.0.1:compile 
[INFO] | | | \- avalon-framework:avalon-framework:jar:4.1.3:compile 
[INFO] | | \- commons-digester:commons-digester:jar:1.8:compile 
[INFO] | |  \- commons-beanutils:commons-beanutils:jar:1.7.0:compile 
[INFO] | +- commons-beanutils:commons-beanutils-core:jar:1.7.0:compile 
[INFO] | +- commons-fileupload:commons-fileupload:jar:1.2:compile 
[INFO] | +- commons-collections:commons-collections:jar:3.2:compile 
[INFO] | +- xom:xom:jar:1.1:compile 
[INFO] | | +- xerces:xmlParserAPIs:jar:2.6.2:compile 
[INFO] | | +- xerces:xercesImpl:jar:2.6.2:compile 
[INFO] | | +- xalan:xalan:jar:2.7.0:compile 
[INFO] | | | \- xml-apis:xml-apis:jar:1.0.b2:compile 
[INFO] | | \- jaxen:jaxen:jar:1.1-beta-8:compile 
[INFO] | |  +- dom4j:dom4j:jar:1.6.1:compile 
[INFO] | |  \- jdom:jdom:jar:1.0:compile 
[INFO] | +- org.beanshell:bsh-core:jar:2.0b4:compile 
[INFO] | \- org.owasp.antisamy:antisamy:jar:1.4.3:compile 
[INFO] |  +- org.apache.xmlgraphics:batik-css:jar:1.7:compile 
[INFO] |  | +- org.apache.xmlgraphics:batik-ext:jar:1.7:compile 
[INFO] |  | +- org.apache.xmlgraphics:batik-util:jar:1.7:compile 
[INFO] |  | \- xml-apis:xml-apis-ext:jar:1.3.04:compile 
[INFO] |  +- net.sourceforge.nekohtml:nekohtml:jar:1.9.12:compile 
[INFO] |  \- commons-httpclient:commons-httpclient:jar:3.1:compile 
[INFO] |  \- commons-codec:commons-codec:jar:1.2:compile 
[INFO] +- com.sun.faces:jsf-api:jar:2.1.7:compile 
[INFO] \- joda-time:joda-time:jar:1.6:compile 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 5 seconds 
[INFO] Finished at: Mon Mar 19 12:55:23 CET 2012 
[INFO] Final Memory: 31M/342M 
[INFO] ---------------------------------------- 

EDIT: que parece que está funcionando sin los

<cookie-config> 
    <secure>true</secure> 
</cookie-config> 

las galletas también se encuentra en modo seguro por defecto
es esto normal? ¿Necesito estas cosas de configuración de cookies ya no? gracias!

+1

Lo reportaría como un error a los chicos de JBoss. – BalusC

+0

@BalusC bien, algo cableado: todo funciona si elimino: ' verdadero' incluso si estoy revisando la cookie, se guarda como código seguro .... si inserto las cosas seguras, obtengo un 'Servlet.service() para servlet Faces Servlet lanzó una excepción: javax.faces.application.ViewExpiredException' - ¿esto no es necesario? – Joerg

+0

Tengo un problema similar causado por cookie-config. Solo cuando se establece, una aplicación antigua basada en turbina entra en "recursión infinita". Lo extraño es que no hay ningún problema con verdadero al acceder al servidor en HTTPS ... – nettle

Respuesta

1

¿Está utilizando https ssl o puerto 80 http? si usa http, elimine la cookie segura como medio seguro sobre ssl

Parece que el servidor web se da cuenta de que no recibe cookies, por lo que realiza una nueva sesión cada vez. si desactiva la cookie segura (significa que es falsa), entonces debería funcionar.

No se garantiza que el navegador acepte cookies. https://www.youtube.com/watch?v=CVEo7wug2ks le muestra cómo ver las cookies (no eliminar a menos que las pruebas)

+0

igual que escribí en mi pregunta, pero la cierro ahora ... – Joerg

-1

¿Ha intentado configurar el javax.faces.STATE_SAVING_METHOD en client en el web.xml?

<context-param> 
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
    <param-value>client</param-value> 
</context-param> 

Debería tener el estado JSF guardado en el lado del cliente en lugar del servidor.

+0

esto no funciona, .... todavía tiene la jSesión en la URL ... – Joerg

0

Trate de usar < http sólo > verdadero/falso </http sólo > en su cookie-config para averiguar si se trata de un problema con la galleta y la única http-complemento.

En realidad, http-only requiere un navegador que lo soporte y tiene como objetivo proteger la cookie de alguien que recupera la cookie en el lado del cliente. Por lo tanto, no debería ser directamente relevante. Sin embargo, no apostaría mi casa a que esto se maneja correctamente dentro de JBoss.

Si por alguna razón la cookie no se genera con la primera solicitud, la reserva del servidor generalmente codifica JSessionID en la URL.

Cuestiones relacionadas