Après avoir configuré Spring Security 3.2, _csrf.token
n'est pas lié à une demande ou à un objet de session.
Voici la configuration de sécurité du printemps:
<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>
Le fichier 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>
Et il rend le prochain HTML:
<input type="hidden" name="" value="" />
Le résultat est un état HTTP 403:
Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
UPDATE Après un certain débogage, l'objet de requête sort correctement DelegatingFilterProxy, mais dans la ligne 469 de CoyoteAdapter, il exécute request.recycle (); qui efface tous les attributs ...
Je teste dans Tomcat 6.0.36, 7.0.50 avec JDK 1.7.
Je n'ai pas compris ce comportement, plutôt que, ce serait possible si quelqu'un me dirigeait vers une guerre d'exemples d'application avec Spring Security 3.2 qui fonctionne avec CSRF.
spring-security.xml
) avec Spring 4.0.0 RELEASE (GA), Spring Security 3.2.0 RELEASE (GA) (bien qu'il soit intégré à Struts 2.3.16. Je ne lui ai pas donné de essayez avec Spring MVC seul). Il échoue cependant, lorsque la demande est en plusieurs parties pour télécharger des fichiers avec le statut 403. J'ai du mal à trouver une solution pour cela.