Spring Security: Pase la sesión a través de dominios

Estoy trabajando en una aplicación web que tiene que usar diferentes dominios para acceder a través de http y https. Ahora me enfrento al siguiente problema: mientras el usuario accede al dominio http, parte de la información se almacena dentro de la sesión. Cuando el usuario realiza la transición a https, la información a la sesión a la que pertenece el usuario se pierde (porque la identificación de la sesión se almacena en la cookie que está asociada con el dominio http).

¿Cómo puedo volver a conectar la sesión correcta al usuario después de que haya cambiado de dominio?

¿Es posible ejecutar algún código java justo antes de que requires-channel="httpsse envíe la redirección causada por "?

Editar: Estaba pensando que podría haber algo específico en Spring Security que podría usarse, pero hasta ahora no pude encontrar nada en la documentación.

Edición 2: Acabo de descubrir que lo que probablemente necesito hacer es reemplazar ChannelProcessingFilter con una implementación personalizada. Pero no sé qué tengo que hacer para que Spring Security acepte mi nueva clase en lugar del ChannelProcessingFilter predeterminado. Nota: estoy usando Spring 3.0.

Respuesta 1

Resolvimos el problema al proporcionar un ChannelProcessor personalizado que se ejecuta justo antes del ChannelProcessor predeterminado y envía una redirección que incluye el jsessionid como parámetro de URL. Luego, el ChannelProcessor predeterminado usa esta URL y envía otra redirección al dominio http.

Para volver a cambiar el parámetro URL al formato ";" para los identificadores de sesión, tenemos algunas directivas adicionales en el apache:

Header edit Location ^(.*)\?jsessionid=([^&]*)&(.*)$ $1;jsessionid=$2?$3
Header edit Location ^(.*)\?jsessionid=([^&]*)$ $1;jsessionid=$2 

Tomcat evalúa la URL y continúa la misma sesión en un dominio diferente.

Respuesta: 2

Tengo un árbol como estructura en la base de datos. Tengo una consulta que devuelve mis registros ordenados de la manera que quiero que se muestren. SELECCIONE branch_id, branch_name, parent_branch_id, level FROM dw_branches ...

Tengo la siguiente máscara / vista: Después de ingresar el nombre y la descripción, puedo agregar una lista de atributos existentes haciendo clic en el botón "Agregar existente". Esto abre otra máscara / vista, donde puedo seleccionar ...

Estoy tratando de agregar un evento que pueda sincronizarse con la cuenta de correo. Podría sincronizar el evento con el correo, pero ¿Cómo agregar la identificación de correo del participante mediante programación en el calendario? Estoy buscando ...

Me estoy conectando con SQlite usando el controlador JDBC. Quiero verificar desde el símbolo del sistema de SQLite cuántas conexiones están abiertas dentro del motor de base de datos. ¿Alguien puede decirme cómo puedo hacerlo?