Dopo aver configurato Spring Security 3.2, _csrf.token
non è vincolato a una richiesta oa un oggetto sessione.
Questa è la configurazione della sicurezza primaverile:
<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>
Il file 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>
E rende il prossimo html:
<input type="hidden" name="" value="" />
Il risultato è lo stato HTTP 403:
Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
UPDATE Dopo un po 'di debug, l'oggetto request esce in forma fine DelegatingFilterProxy, ma nella riga 469 di CoyoteAdapter esegue request.recycle (); che cancella tutti gli attributi ...
Provo in Tomcat 6.0.36, 7.0.50 con JDK 1.7.
Non ho capito questo comportamento, piuttosto che, sarebbe possibile se qualcuno mi indicasse la direzione di una guerra di esempio di applicazione con Spring Security 3.2 che funziona con CSRF.
spring-security.xml
) con Spring 4.0.0 RELEASE (GA), Spring Security 3.2.0 RELEASE (GA) (sebbene sia integrato con Struts 2.3.16. Non gli ho dato un prova con Spring MVC da solo). Tuttavia non riesce, quando la richiesta è multiparte per il caricamento di file con lo stato 403. Sto lottando per trovare una soluzione.