2012-02-24 15 views
7

Acabo de crear un servlet HelloWorld y he implementado CAS en él. estoy siendo capaz de iniciar una sesión sin problema y CAS es el establecimiento de 3 galletas en mi navegador, el CASGT y 2 JSESSIONID 1 para/cas y otra para/helloWorldInicio de sesión de CAS y eliminación de cookies

El problema es que entonces accedo https://blah:8443/cas/logout, me ver la pantalla de sesión cerrada pero las cookies aún están en mi navegador, por lo que no estoy siendo redireccionado, puedo ingresar de nuevo en/helloWorld sin que aparezca la pantalla de inicio de sesión.

¿Sabes qué debo hacer para que CAS elimine las cookies que creó cuando cerré la sesión?

Gracias de antemano

Respuesta

5

galletas CASGT es fijado por CAS y debe ser desarmado por ella. El procedimiento de cierre de sesión CAS funciona de la siguiente manera:

  1. En realidad, va a la página de cierre de sesión de CAS. La página debe conocer la aplicación desde la que está cerrando sesión. Una forma es redirigir a la página de cierre de sesión de CAS desde su aplicación, proporcionando la URL de redireccionamiento como parámetro.

  2. Su cookie se borra y luego se le redirige a su solicitud mediante solicitud POST.

  3. SingleSignOutFilter capta un parámetro especial "logoutRequest" y realmente destruye el mapeo de ticket/sesión que contenía desde el principio y también invalida la sesión actual.

Para depurar CAS, habilite el registro de nivel TRACE. De esta forma sabrá si se recibió la solicitud adecuada o si la sesión se ha invalidado.

También te aconsejo que consultes el código del paquete org.jasig.cas.client.session, que es bastante simple.

+2

Muchas gracias por sus sugerencias Infeligo, no resolvió mi problema pero me ayudó a descubrir qué estaba pasando mal.El problema que tuve fue uno de configuración SSL, se llamó a la pantalla de desconexión en http para que el navegador no enviara la cookie CASGT, por lo que el servidor CAS no hace nada excepto mostrar una pantalla que dice que el cierre de sesión fue exitoso. –

+0

Tiene que implementar algún código personalizado en el lado del servidor CAS para eliminar sus cookies personalizadas después de cerrar la sesión con éxito – alexanoid

3

Debe verificar la documentación en el inicio de sesión único CAS que se puede encontrar here. Dice:

Cuando inicio de sesión único de obras:

Clientes/Idiomas cuya gestión de sesiones se mantiene en el lado del servidor . Los clientes de CAS pueden acceder a la información de la sesión para finalizar la sesión en el .

Cuando inicio de sesión único de salida no funciona:

Clientes/Idiomas cuya gestión sesión sólo se compone de cookies. CAS no tiene acceso a las cookies del navegador y no puede por lo tanto finalizar una sesión. (sin embargo, cerrar una ventana del navegador debe hacer que)

Y creo que ese es prácticamente tu caso. Basado en cookies no es posible hacer un SSout, pero si puede usar un framework como Spring (como lo hacemos en nuestros proyectos), el SSout es fácil de configurar y es muy útil

Cuestiones relacionadas