Desabilitação do Spring Security 3.2 CSRF para URLs específicos
Ativei o CSRF no meu aplicativo Spring MVC usando o Spring security 3.2.
Meu spring-security.xml
<http>
<intercept-url pattern="/**/verify" requires-channel="https"/>
<intercept-url pattern="/**/login*" requires-channel="http"/>
...
...
<csrf />
</http>
Tentando desativar o CSRF para solicitações que contêm 'verificar' no URL da solicitação.
MySecurityConfig.java
@Configuration
@EnableWebSecurity
public class MySecurityConfig extends WebSecurityConfigurerAdapter {
private CsrfMatcher csrfRequestMatcher = new CsrfMatcher();
@Override
public void configure(HttpSecurity http) throws Exception {
http.csrf().requireCsrfProtectionMatcher(csrfRequestMatcher);
}
class CsrfMatcher implements RequestMatcher {
@Override
public boolean matches(HttpServletRequest request) {
if (request.getRequestURL().indexOf("verify") != -1)
return false;
else if (request.getRequestURL().indexOf("homePage") != -1)
return false;
return true;
}
}
}
O filtro csrf valida o token CSRF enviado a partir de 'Verifique' e a exceção de token inválida (403) é lançada quando estou enviando uma solicitação para https a partir de http. Como posso desativar a autenticação de token csrf nesse cenário?