Spring Security y Sesiones sobre Servicios Web

Resumen

¿Cómo se obtiene la sesión de un cliente de servicios web que utiliza servicios web de Spring y Spring Security?

Detalles

Después de enviar

<form method="POST" action="<c:url value="/j_spring_security_check" />">...</form>

He notado que puedes:

public class MyUserDetailsService implements UserDetailsService {}

Lo que le permitirá anular métodos como, loadUserByUsername(String username)por lo tanto, poder recuperar el nombre de usuario enviado y realizar una búsqueda en la base de datos para devolver un objeto de usuario.

Sin embargo, el problema que tengo es que no estoy seguro de dónde SecurityContextHolderse establece. Puedo obtener el objeto de usuario usando esta línea de código:

User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();

Pero no estoy seguro de cómo se establece en primer lugar. Me gustaría conocer el flujo después de enviar el formulario mencionado anteriormente para poder identificar cómo SecurityContextHolderse configura.

La razón por la que quiero saber esto es porque quiero usarlo como una "sesión" para la autenticación del cliente del servicio web en lugar de que el cliente vuelva a enviar las credenciales con cada solicitud.


Versión de primavera: 3.0.2.RELEASE

Respuesta 1

Mi pregunta es esencialmente una duda sobre la recursividad. Estaba resolviendo el clásico problema transversal DFS "Rata en un laberinto". Mi entrada fue una matriz n * n int a [] [] donde para los índices i y j, a [i] [j] podría ...

Tengo un archivo xml creado con xmloutputter. En la primera vez que se crea, me crea el encabezado, pero luego agrego información, no lo haría. ¿Cómo puedo omitirlo? EDITAR elemento ...

Estoy ejecutando los códigos oficiales de SDK Junit, y funciona bien. Pero cuando cambio la información de la cuenta a la mía, se produce una excepción. Debug dice que devuelve el estado http de 400 cuando se publica en el punto final "/ oauth / ...

Me voy a conectar a un servicio web que tiene un WSDL que se dice que es compatible con JAX WS 2.0 / 2.1. Qué significa eso? ¿Tendrá algún impacto en la forma en que me conecto al servicio web? Que cierto ...