Setelah mengkonfigurasi Spring Security 3.2, _csrf.token
tidak terikat pada permintaan atau objek sesi.
Ini adalah konfigurasi keamanan pegas:
<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>
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>
Dan itu membuat html berikutnya:
<input type="hidden" name="" value="" />
Hasilnya adalah status HTTP 403:
Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
UPDATE Setelah beberapa debug, objek permintaan keluar dari DelegatingFilterProxy, tetapi dalam baris 469 CoyoteAdapter itu mengeksekusi request.recycle (); yang menghapus semua atribut ...
Saya menguji di Tomcat 6.0.36, 7.0.50 dengan JDK 1.7.
Saya belum memahami perilaku ini, alih-alih, ini akan menjadi mungkin jika seseorang mengarahkan saya ke beberapa contoh aplikasi perang dengan Spring Security 3.2 yang bekerja dengan CSRF.
spring-security.xml
) dengan Spring 4.0.0 RELEASE (GA), Spring Security 3.2.0 RELEASE (GA) (meskipun terintegrasi dengan Struts 2.3.16. Saya tidak memberikannya coba dengan Spring MVC saja). Namun gagal, ketika permintaan multipart untuk mengupload file dengan status 403. Saya berjuang untuk menemukan solusi untuk itu.