Después de configurar Spring Security 3.2, _csrf.token
no está vinculado a una solicitud o un objeto de sesión.
Esta es la configuración de seguridad de primavera:
<http pattern="/login.jsp" security="none"/>
<http>
<intercept-url pattern="/**" access="ROLE_USER"/>
<form-login login-page="/login.jsp"
authentication-failure-url="/login.jsp?error=1"
default-target-url="/index.jsp"/>
<logout/>
<csrf />
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="test" password="test" authorities="ROLE_USER/>
</user-service>
</authentication-provider>
</authentication-manager>
El archivo login.jsp
<form name="f" action="${contextPath}/j_spring_security_check" method="post" >
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
<button id="ingresarButton"
name="submit"
type="submit"
class="right"
style="margin-right: 10px;">Ingresar</button>
<span>
<label for="usuario">Usuario :</label>
<input type="text" name="j_username" id="u" class="" value=''/>
</span>
<span>
<label for="clave">Contraseña :</label>
<input type="password"
name="j_password"
id="p"
class=""
onfocus="vc_psfocus = 1;"
value="">
</span>
</form>
Y muestra el siguiente html:
<input type="hidden" name="" value="" />
El resultado es el estado HTTP 403:
Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
ACTUALIZACIÓN Después de una depuración, el objeto de solicitud sale bien de DelegatingFilterProxy, pero en la línea 469 de CoyoteAdapter ejecuta request.recycle (); que borra todos los atributos ...
Pruebo en Tomcat 6.0.36, 7.0.50 con JDK 1.7.
No he entendido este comportamiento, en lugar de, sería posible si alguien me indicara alguna guerra de muestra de aplicación con Spring Security 3.2 que funciona con CSRF.
spring-security.xml
) con Spring 4.0.0 RELEASE (GA), Spring Security 3.2.0 RELEASE (GA) (aunque está integrado con Struts 2.3.16. No le di un intente con Spring MVC solo). Sin embargo, falla cuando la solicitud es de varias partes para cargar archivos con el estado 403. Estoy luchando por encontrar una solución.